Commit a83021650981877cd2a983a4e2e05bbab9fa93c6

Authored by Daniel
1 parent e6710a34

social_network: Join community on login/signup

Join community if user log in or sign up after following a "Join" link within
a community.

(ActionItem3096)
app/controllers/public/account_controller.rb
@@ -18,6 +18,7 @@ class AccountController < ApplicationController @@ -18,6 +18,7 @@ class AccountController < ApplicationController
18 if @user and @user.activate 18 if @user and @user.activate
19 @message = _("Your account has been activated, now you can log in!") 19 @message = _("Your account has been activated, now you can log in!")
20 check_redirection 20 check_redirection
  21 + session[:join] = params[:join] unless params[:join].blank?
21 render :action => 'login', :userlogin => @user.login 22 render :action => 'login', :userlogin => @user.login
22 else 23 else
23 session[:notice] = _("It looks like you're trying to activate an account. Perhaps have already activated this account?") 24 session[:notice] = _("It looks like you're trying to activate an account. Perhaps have already activated this account?")
@@ -36,7 +37,7 @@ class AccountController < ApplicationController @@ -36,7 +37,7 @@ class AccountController < ApplicationController
36 self.current_user ||= User.authenticate(params[:user][:login], params[:user][:password], environment) if params[:user] 37 self.current_user ||= User.authenticate(params[:user][:login], params[:user][:password], environment) if params[:user]
37 38
38 if logged_in? 39 if logged_in?
39 - check_join_in_community(self.current_user) 40 + join_community(self.current_user)
40 if params[:remember_me] == "1" 41 if params[:remember_me] == "1"
41 self.current_user.remember_me 42 self.current_user.remember_me
42 cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } 43 cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
@@ -104,7 +105,7 @@ class AccountController < ApplicationController @@ -104,7 +105,7 @@ class AccountController < ApplicationController
104 end 105 end
105 if @user.activated? 106 if @user.activated?
106 self.current_user = @user 107 self.current_user = @user
107 - check_join_in_community(@user) 108 + join_community(@user)
108 go_to_signup_initial_page 109 go_to_signup_initial_page
109 else 110 else
110 @register_pending = true 111 @register_pending = true
@@ -453,4 +454,12 @@ class AccountController < ApplicationController @@ -453,4 +454,12 @@ class AccountController < ApplicationController
453 @user.update_attributes(:return_to => nil) 454 @user.update_attributes(:return_to => nil)
454 end 455 end
455 end 456 end
  457 +
  458 + def join_community(user)
  459 + profile_to_join = session[:join]
  460 + unless profile_to_join.blank?
  461 + environment.profiles.find_by_identifier(profile_to_join).add_member(user.person)
  462 + session.delete(:join)
  463 + end
  464 + end
456 end 465 end
test/functional/profile_controller_test.rb
@@ -477,25 +477,6 @@ class ProfileControllerTest < ActionController::TestCase @@ -477,25 +477,6 @@ class ProfileControllerTest < ActionController::TestCase
477 assert_equal "/profile/#{community.identifier}", @request.session[:previous_location] 477 assert_equal "/profile/#{community.identifier}", @request.session[:previous_location]
478 end 478 end
479 479
480 - should 'redirect to login after user not logged asks to join a community' do  
481 - community = Community.create!(:name => 'my test community')  
482 -  
483 - get :join_not_logged, :profile => community.identifier  
484 -  
485 - assert_equal community.identifier, @request.session[:join]  
486 - assert_redirected_to :controller => :account, :action => :login  
487 - end  
488 -  
489 - should 'redirect to join after user logged asks to join_not_logged a community' do  
490 - community = Community.create!(:name => 'my test community')  
491 -  
492 - login_as(profile.identifier)  
493 - get :join_not_logged, :profile => community.identifier  
494 -  
495 - assert_equal community.identifier, @request.session[:join]  
496 - assert_redirected_to :controller => :profile, :action => :join  
497 - end  
498 -  
499 should 'show number of published events in index' do 480 should 'show number of published events in index' do
500 profile.articles << Event.new(:name => 'Published event', :start_date => Date.today) 481 profile.articles << Event.new(:name => 'Published event', :start_date => Date.today)
501 profile.articles << Event.new(:name => 'Unpublished event', :start_date => Date.today, :published => false) 482 profile.articles << Event.new(:name => 'Unpublished event', :start_date => Date.today, :published => false)
@@ -1195,7 +1176,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1195,7 +1176,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1195 20.times {comment = fast_create(Comment, :source_id => article, :title => 'a comment', :body => 'lalala', :created_at => Time.now)} 1176 20.times {comment = fast_create(Comment, :source_id => article, :title => 'a comment', :body => 'lalala', :created_at => Time.now)}
1196 article.reload 1177 article.reload
1197 get :index, :profile => profile.identifier 1178 get :index, :profile => profile.identifier
1198 - assert_tag 'ul', :attributes => {:class => 'profile-wall-activities-comments'}, :children => {:count => 0 } 1179 + assert_tag 'ul', :attributes => {:class => 'profile-wall-activities-comments'}, :children => {:count => 0 }
1199 end 1180 end
1200 1181
1201 should "view more comments paginated" do 1182 should "view more comments paginated" do
@@ -1221,7 +1202,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1221,7 +1202,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1221 20.times {fast_create(Scrap, :sender_id => profile.id, :receiver_id => profile.id, :scrap_id => scrap.id)} 1202 20.times {fast_create(Scrap, :sender_id => profile.id, :receiver_id => profile.id, :scrap_id => scrap.id)}
1222 profile.reload 1203 profile.reload
1223 get :index, :profile => profile.identifier 1204 get :index, :profile => profile.identifier
1224 - assert_tag 'ul', :attributes => {:class => 'profile-wall-activities-comments scrap-replies'}, :children => {:count => 0 } 1205 + assert_tag 'ul', :attributes => {:class => 'profile-wall-activities-comments scrap-replies'}, :children => {:count => 0 }
1225 end 1206 end
1226 1207
1227 should "view more replies paginated" do 1208 should "view more replies paginated" do