Commit b24e60efb22bd3dbf57a79bed2cc9a97162e25ad
1 parent
3326fe90
Exists in
master
and in
22 other branches
Associate current session with the user model
Showing
4 changed files
with
16 additions
and
3 deletions
Show diff stats
app/controllers/public/account_controller.rb
@@ -16,7 +16,7 @@ class AccountController < ApplicationController | @@ -16,7 +16,7 @@ class AccountController < ApplicationController | ||
16 | def activate | 16 | def activate |
17 | @user = User.find_by_activation_code(params[:activation_code]) if params[:activation_code] | 17 | @user = User.find_by_activation_code(params[:activation_code]) if params[:activation_code] |
18 | if @user | 18 | if @user |
19 | - unless @user.environment.enabled?('admin_must_approve_new_users') | 19 | + unless @user.environment.enabled?('admin_must_approve_new_users') |
20 | if @user.activate | 20 | if @user.activate |
21 | @message = _("Your account has been activated, now you can log in!") | 21 | @message = _("Your account has been activated, now you can log in!") |
22 | check_redirection | 22 | check_redirection |
@@ -30,7 +30,7 @@ class AccountController < ApplicationController | @@ -30,7 +30,7 @@ class AccountController < ApplicationController | ||
30 | @user.activation_code = nil | 30 | @user.activation_code = nil |
31 | @user.save! | 31 | @user.save! |
32 | redirect_to :controller => :home | 32 | redirect_to :controller => :home |
33 | - end | 33 | + end |
34 | end | 34 | end |
35 | else | 35 | else |
36 | session[:notice] = _("It looks like you're trying to activate an account. Perhaps have already activated this account?") | 36 | session[:notice] = _("It looks like you're trying to activate an account. Perhaps have already activated this account?") |
@@ -94,6 +94,7 @@ class AccountController < ApplicationController | @@ -94,6 +94,7 @@ class AccountController < ApplicationController | ||
94 | @invitation_code = params[:invitation_code] | 94 | @invitation_code = params[:invitation_code] |
95 | begin | 95 | begin |
96 | @user = User.new(params[:user]) | 96 | @user = User.new(params[:user]) |
97 | + @user.session = session | ||
97 | @user.terms_of_use = environment.terms_of_use | 98 | @user.terms_of_use = environment.terms_of_use |
98 | @user.environment = environment | 99 | @user.environment = environment |
99 | @terms_of_use = environment.terms_of_use | 100 | @terms_of_use = environment.terms_of_use |
app/models/user.rb
@@ -97,6 +97,8 @@ class User < ActiveRecord::Base | @@ -97,6 +97,8 @@ class User < ActiveRecord::Base | ||
97 | belongs_to :environment | 97 | belongs_to :environment |
98 | 98 | ||
99 | has_many :sessions, dependent: :destroy | 99 | has_many :sessions, dependent: :destroy |
100 | + # holds the current session, see lib/authenticated_system.rb | ||
101 | + attr_accessor :session | ||
100 | 102 | ||
101 | attr_protected :activated_at | 103 | attr_protected :activated_at |
102 | 104 |
lib/authenticated_system.rb
@@ -24,7 +24,11 @@ module AuthenticatedSystem | @@ -24,7 +24,11 @@ module AuthenticatedSystem | ||
24 | # Accesses the current user from the session. | 24 | # Accesses the current user from the session. |
25 | def current_user | 25 | def current_user |
26 | @current_user ||= begin | 26 | @current_user ||= begin |
27 | - User.current = (session[:user] && User.find_by_id(session[:user])) || nil | 27 | + id = session[:user] |
28 | + user = User.where(id: id).first if id | ||
29 | + user.session = session if user | ||
30 | + User.current = user | ||
31 | + user | ||
28 | end | 32 | end |
29 | end | 33 | end |
30 | 34 | ||
@@ -34,6 +38,7 @@ module AuthenticatedSystem | @@ -34,6 +38,7 @@ module AuthenticatedSystem | ||
34 | session.delete(:user) | 38 | session.delete(:user) |
35 | else | 39 | else |
36 | session[:user] = new_user.id | 40 | session[:user] = new_user.id |
41 | + new_user.session = session | ||
37 | new_user.register_login | 42 | new_user.register_login |
38 | end | 43 | end |
39 | @current_user = User.current = new_user | 44 | @current_user = User.current = new_user |
test/functional/account_controller_test.rb
@@ -623,6 +623,11 @@ class AccountControllerTest < ActionController::TestCase | @@ -623,6 +623,11 @@ class AccountControllerTest < ActionController::TestCase | ||
623 | end | 623 | end |
624 | end | 624 | end |
625 | 625 | ||
626 | + should 'fill session for new users' do | ||
627 | + post :signup, :user => { :login => 'testuser', :password => '123456', :password_confirmation => '123456', :email => 'testuser@example.com' }, :profile_data => { :organization => 'example.com' } | ||
628 | + assert_equal assigns(:user).session, session | ||
629 | + end | ||
630 | + | ||
626 | should 'signup filling in mandatory person fields' do | 631 | should 'signup filling in mandatory person fields' do |
627 | Person.any_instance.stubs(:required_fields).returns(['organization']) | 632 | Person.any_instance.stubs(:required_fields).returns(['organization']) |
628 | assert_difference 'User.count' do | 633 | assert_difference 'User.count' do |