diff options
| -rw-r--r-- | config/defaults.yml | 23 | ||||
| -rw-r--r-- | users/app/controllers/users_controller.rb | 6 | ||||
| -rw-r--r-- | users/app/models/unauthenticated_user.rb | 2 | ||||
| -rw-r--r-- | users/app/models/user.rb | 12 | ||||
| -rw-r--r-- | users/app/views/users/_edit.html.haml | 18 | 
5 files changed, 61 insertions, 0 deletions
| diff --git a/config/defaults.yml b/config/defaults.yml index c7c8502..c986d01 100644 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -41,12 +41,33 @@ common: &common    # handles that will be allowed despite being in /etc/passwd or rfc2142    handle_whitelist: [] +service_levels: &service_levels +  service_levels: +    0: +      name: anonymous +      cert_prefix: "LIMITED" +      description: "anonymous account, with rate limited VPN" +    1: +      name: free +      cert_prefix: "LIMITED" +      description: "free account, with rate limited VPN" +      cost: 0 +      quota: 100 +    2: +      name: premium +      cert_prefix: "UNLIMITED" +      description: "premium account, with unlimited vpn" +      cost: +        USD: 10 +        EUR: 10 +  default_service_level: 1  development:    <<: *downloads    <<: *dev_ca    <<: *cert_options    <<: *common +  <<: *service_levels    admins: [blue, admin, admin2]    domain: example.org    secret_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' @@ -57,6 +78,7 @@ test:    <<: *dev_ca    <<: *cert_options    <<: *common +  <<: *service_levels    admins: [admin, admin2]    domain: test.me    secret_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' @@ -66,6 +88,7 @@ production:    <<: *downloads    <<: *cert_options    <<: *common +  <<: *service_levels    admins: []    domain: example.net    payment: [] diff --git a/users/app/controllers/users_controller.rb b/users/app/controllers/users_controller.rb index 3cbb6dc..8b4715c 100644 --- a/users/app/controllers/users_controller.rb +++ b/users/app/controllers/users_controller.rb @@ -34,6 +34,12 @@ class UsersController < UsersBaseController    def edit    end +  ## added so updating service level works, but not sure we will actually want this. also not sure that this is place to prevent user from updating own effective service level, but here as placeholder: +  def update +    @user.update_attributes(params[:user]) unless (!admin? and params[:user][:effective_service_level]) +    respond_with @user +  end +    def deactivate      @user.enabled = false      @user.save diff --git a/users/app/models/unauthenticated_user.rb b/users/app/models/unauthenticated_user.rb index 99a6874..0fc17d2 100644 --- a/users/app/models/unauthenticated_user.rb +++ b/users/app/models/unauthenticated_user.rb @@ -1,4 +1,6 @@  # The nil object for the user class  class UnauthenticatedUser < Object +  # will probably want something here to return service level as  APP_CONFIG[:service_levels][0] but not sure how will be accessing. +  end diff --git a/users/app/models/user.rb b/users/app/models/user.rb index a14fcb5..35212a1 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -9,6 +9,12 @@ class User < CouchRest::Model::Base    property :enabled, TrueClass, :default => true +  # these will be null by default. should we set to APP_CONFIG[:default_service_level] by default, or have code assume that until these get set?: +  property :desired_service_level, Integer, :accessible => true +  property :effective_service_level, Integer, :accessible => true + +  before_save :update_effective_service_level +    validates :login, :password_salt, :password_verifier,      :presence => true @@ -116,4 +122,10 @@ class User < CouchRest::Model::Base    def serverside?      true    end + +  def update_effective_service_level +    if self.desired_service_level_changed? +      self.effective_service_level = self.desired_service_level +    end +  end  end diff --git a/users/app/views/users/_edit.html.haml b/users/app/views/users/_edit.html.haml index b86172e..d5a0ff1 100644 --- a/users/app/views/users/_edit.html.haml +++ b/users/app/views/users/_edit.html.haml @@ -37,6 +37,24 @@      .controls        = f.submit t(:save), :class => 'btn', :data => {"loading-text" => "Saving..."} + +-# TODO: probably won't want here, but here for now. Also, we will need way to ensure payment if they pick a non-free plan. +-# +-# SERVICE LEVEL +-# +- form_options = {:html => {:class => user_form_class('form-horizontal'), :id => 'update_service_level', :data => {token: session[:token]}}, :validate => true} += simple_form_for @user, form_options do |f| +  %legend= t(:service_level) +  - if @user != current_user +    = t(:desired_service_level) +  = f.select :desired_service_level, [[APP_CONFIG[:service_levels][1][:description], 1],[APP_CONFIG[:service_levels][2][:description], 2]], :selected => @user.desired_service_level || APP_CONFIG[:default_service_level] +  - if @user != current_user +    %p +    = t(:effective_service_level) +    = f.select :effective_service_level, [[APP_CONFIG[:service_levels][1][:description], 1],[APP_CONFIG[:service_levels][2][:description], 2]], :selected => @user.effective_service_level || APP_CONFIG[:default_service_level] +  .control-group +    .controls +      = f.submit t(:save), :class => 'btn', :data => {"loading-text" => "Saving..."}  -#  -# DESTROY ACCOUNT  -# | 
