Mercurial > hg > soundsoftware-site
comparison app/controllers/account_controller.rb @ 1295:622f24f53b42 redmine-2.3
Update to Redmine SVN revision 11972 on 2.3-stable branch
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:02:21 +0100 |
parents | 433d4f72a19b |
children | 4f746d8966dd |
comparison
equal
deleted
inserted
replaced
1294:3e4c3460b6ca | 1295:622f24f53b42 |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2012 Jean-Philippe Lang | 2 # Copyright (C) 2006-2013 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
23 skip_before_filter :check_if_login_required | 23 skip_before_filter :check_if_login_required |
24 | 24 |
25 # Login request and validation | 25 # Login request and validation |
26 def login | 26 def login |
27 if request.get? | 27 if request.get? |
28 logout_user | 28 if User.current.logged? |
29 redirect_to home_url | |
30 end | |
29 else | 31 else |
30 authenticate_user | 32 authenticate_user |
31 end | 33 end |
32 rescue AuthSourceException => e | 34 rescue AuthSourceException => e |
33 logger.error "An error occured when authenticating #{params[:username]}: #{e.message}" | 35 logger.error "An error occured when authenticating #{params[:username]}: #{e.message}" |
34 render_error :message => e.message | 36 render_error :message => e.message |
35 end | 37 end |
36 | 38 |
37 # Log out current user and redirect to welcome page | 39 # Log out current user and redirect to welcome page |
38 def logout | 40 def logout |
39 logout_user | 41 if User.current.anonymous? |
40 redirect_to home_url | 42 redirect_to home_url |
43 elsif request.post? | |
44 logout_user | |
45 redirect_to home_url | |
46 end | |
47 # display the logout form | |
41 end | 48 end |
42 | 49 |
43 # Lets user choose a new password | 50 # Lets user choose a new password |
44 def lost_password | 51 def lost_password |
45 redirect_to(home_url) && return unless Setting.lost_password? | 52 (redirect_to(home_url); return) unless Setting.lost_password? |
46 if params[:token] | 53 if params[:token] |
47 @token = Token.find_by_action_and_value("recovery", params[:token].to_s) | 54 @token = Token.find_token("recovery", params[:token].to_s) |
48 if @token.nil? || @token.expired? | 55 if @token.nil? || @token.expired? |
49 redirect_to home_url | 56 redirect_to home_url |
50 return | 57 return |
51 end | 58 end |
52 @user = @token.user | 59 @user = @token.user |
90 end | 97 end |
91 end | 98 end |
92 | 99 |
93 # User self-registration | 100 # User self-registration |
94 def register | 101 def register |
95 redirect_to(home_url) && return unless Setting.self_registration? || session[:auth_source_registration] | 102 (redirect_to(home_url); return) unless Setting.self_registration? || session[:auth_source_registration] |
96 if request.get? | 103 if request.get? |
97 session[:auth_source_registration] = nil | 104 session[:auth_source_registration] = nil |
98 @user = User.new(:language => Setting.default_language) | 105 @user = User.new(:language => current_language.to_s) |
99 else | 106 else |
100 user_params = params[:user] || {} | 107 user_params = params[:user] || {} |
101 @user = User.new | 108 @user = User.new |
102 @user.safe_attributes = user_params | 109 @user.safe_attributes = user_params |
103 @user.admin = false | 110 @user.admin = false |
108 @user.auth_source_id = session[:auth_source_registration][:auth_source_id] | 115 @user.auth_source_id = session[:auth_source_registration][:auth_source_id] |
109 if @user.save | 116 if @user.save |
110 session[:auth_source_registration] = nil | 117 session[:auth_source_registration] = nil |
111 self.logged_user = @user | 118 self.logged_user = @user |
112 flash[:notice] = l(:notice_account_activated) | 119 flash[:notice] = l(:notice_account_activated) |
113 redirect_to :controller => 'my', :action => 'account' | 120 redirect_to my_account_path |
114 end | 121 end |
115 else | 122 else |
116 @user.login = params[:user][:login] | 123 @user.login = params[:user][:login] |
117 unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? | 124 unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? |
118 @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] | 125 @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] |
130 end | 137 end |
131 end | 138 end |
132 | 139 |
133 # Token based account activation | 140 # Token based account activation |
134 def activate | 141 def activate |
135 redirect_to(home_url) && return unless Setting.self_registration? && params[:token] | 142 (redirect_to(home_url); return) unless Setting.self_registration? && params[:token].present? |
136 token = Token.find_by_action_and_value('register', params[:token]) | 143 token = Token.find_token('register', params[:token].to_s) |
137 redirect_to(home_url) && return unless token and !token.expired? | 144 (redirect_to(home_url); return) unless token and !token.expired? |
138 user = token.user | 145 user = token.user |
139 redirect_to(home_url) && return unless user.registered? | 146 (redirect_to(home_url); return) unless user.registered? |
140 user.activate | 147 user.activate |
141 if user.save | 148 if user.save |
142 token.destroy | 149 token.destroy |
143 flash[:notice] = l(:notice_account_activated) | 150 flash[:notice] = l(:notice_account_activated) |
144 end | 151 end |
167 successful_authentication(user) | 174 successful_authentication(user) |
168 end | 175 end |
169 end | 176 end |
170 | 177 |
171 def open_id_authenticate(openid_url) | 178 def open_id_authenticate(openid_url) |
172 authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url, :method => :post) do |result, identity_url, registration| | 179 back_url = signin_url(:autologin => params[:autologin]) |
180 | |
181 authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => back_url, :method => :post) do |result, identity_url, registration| | |
173 if result.successful? | 182 if result.successful? |
174 user = User.find_or_initialize_by_identity_url(identity_url) | 183 user = User.find_or_initialize_by_identity_url(identity_url) |
175 if user.new_record? | 184 if user.new_record? |
176 # Self-registration off | 185 # Self-registration off |
177 redirect_to(home_url) && return unless Setting.self_registration? | 186 (redirect_to(home_url); return) unless Setting.self_registration? |
178 | 187 |
179 # Create on the fly | 188 # Create on the fly |
180 user.login = registration['nickname'] unless registration['nickname'].nil? | 189 user.login = registration['nickname'] unless registration['nickname'].nil? |
181 user.mail = registration['email'] unless registration['email'].nil? | 190 user.mail = registration['email'] unless registration['email'].nil? |
182 user.firstname, user.lastname = registration['fullname'].split(' ') unless registration['fullname'].nil? | 191 user.firstname, user.lastname = registration['fullname'].split(' ') unless registration['fullname'].nil? |
216 # generate a key and set cookie if autologin | 225 # generate a key and set cookie if autologin |
217 if params[:autologin] && Setting.autologin? | 226 if params[:autologin] && Setting.autologin? |
218 set_autologin_cookie(user) | 227 set_autologin_cookie(user) |
219 end | 228 end |
220 call_hook(:controller_account_success_authentication_after, {:user => user }) | 229 call_hook(:controller_account_success_authentication_after, {:user => user }) |
221 redirect_back_or_default :controller => 'my', :action => 'page' | 230 redirect_back_or_default my_page_path |
222 end | 231 end |
223 | 232 |
224 def set_autologin_cookie(user) | 233 def set_autologin_cookie(user) |
225 token = Token.create(:user => user, :action => 'autologin') | 234 token = Token.create(:user => user, :action => 'autologin') |
226 cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin' | |
227 cookie_options = { | 235 cookie_options = { |
228 :value => token.value, | 236 :value => token.value, |
229 :expires => 1.year.from_now, | 237 :expires => 1.year.from_now, |
230 :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), | 238 :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), |
231 :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), | 239 :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), |
232 :httponly => true | 240 :httponly => true |
233 } | 241 } |
234 cookies[cookie_name] = cookie_options | 242 cookies[autologin_cookie_name] = cookie_options |
235 end | 243 end |
236 | 244 |
237 # Onthefly creation failed, display the registration form to fill/fix attributes | 245 # Onthefly creation failed, display the registration form to fill/fix attributes |
238 def onthefly_creation_failed(user, auth_source_options = { }) | 246 def onthefly_creation_failed(user, auth_source_options = { }) |
239 @user = user | 247 @user = user |
268 user.activate | 276 user.activate |
269 user.last_login_on = Time.now | 277 user.last_login_on = Time.now |
270 if user.save | 278 if user.save |
271 self.logged_user = user | 279 self.logged_user = user |
272 flash[:notice] = l(:notice_account_activated) | 280 flash[:notice] = l(:notice_account_activated) |
273 redirect_to :controller => 'my', :action => 'account' | 281 redirect_to my_account_path |
274 else | 282 else |
275 yield if block_given? | 283 yield if block_given? |
276 end | 284 end |
277 end | 285 end |
278 | 286 |