Commit b24e60efb22bd3dbf57a79bed2cc9a97162e25ad
1 parent
3326fe90
Exists in
master
and in
9 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 | 16 | def activate |
17 | 17 | @user = User.find_by_activation_code(params[:activation_code]) if params[:activation_code] |
18 | 18 | if @user |
19 | - unless @user.environment.enabled?('admin_must_approve_new_users') | |
19 | + unless @user.environment.enabled?('admin_must_approve_new_users') | |
20 | 20 | if @user.activate |
21 | 21 | @message = _("Your account has been activated, now you can log in!") |
22 | 22 | check_redirection |
... | ... | @@ -30,7 +30,7 @@ class AccountController < ApplicationController |
30 | 30 | @user.activation_code = nil |
31 | 31 | @user.save! |
32 | 32 | redirect_to :controller => :home |
33 | - end | |
33 | + end | |
34 | 34 | end |
35 | 35 | else |
36 | 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 | 94 | @invitation_code = params[:invitation_code] |
95 | 95 | begin |
96 | 96 | @user = User.new(params[:user]) |
97 | + @user.session = session | |
97 | 98 | @user.terms_of_use = environment.terms_of_use |
98 | 99 | @user.environment = environment |
99 | 100 | @terms_of_use = environment.terms_of_use | ... | ... |
app/models/user.rb
lib/authenticated_system.rb
... | ... | @@ -24,7 +24,11 @@ module AuthenticatedSystem |
24 | 24 | # Accesses the current user from the session. |
25 | 25 | def current_user |
26 | 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 | 32 | end |
29 | 33 | end |
30 | 34 | |
... | ... | @@ -34,6 +38,7 @@ module AuthenticatedSystem |
34 | 38 | session.delete(:user) |
35 | 39 | else |
36 | 40 | session[:user] = new_user.id |
41 | + new_user.session = session | |
37 | 42 | new_user.register_login |
38 | 43 | end |
39 | 44 | @current_user = User.current = new_user | ... | ... |
test/functional/account_controller_test.rb
... | ... | @@ -623,6 +623,11 @@ class AccountControllerTest < ActionController::TestCase |
623 | 623 | end |
624 | 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 | 631 | should 'signup filling in mandatory person fields' do |
627 | 632 | Person.any_instance.stubs(:required_fields).returns(['organization']) |
628 | 633 | assert_difference 'User.count' do | ... | ... |