|
1 | NO CONTENT: new file 100644, binary diff hidden |
@@ -46,24 +46,10 class AccountController < ApplicationController | |||
|
46 | 46 | self.logged_user = nil |
|
47 | 47 | else |
|
48 | 48 | # Authenticate user |
|
49 | user = User.try_to_login(params[:username], params[:password]) | |
|
50 | if user.nil? | |
|
51 | # Invalid credentials | |
|
52 | flash.now[:error] = l(:notice_account_invalid_creditentials) | |
|
53 | elsif user.new_record? | |
|
54 | # Onthefly creation failed, display the registration form to fill/fix attributes | |
|
55 | @user = user | |
|
56 | session[:auth_source_registration] = {:login => user.login, :auth_source_id => user.auth_source_id } | |
|
57 | render :action => 'register' | |
|
49 | unless using_open_id? | |
|
50 | password_authentication | |
|
58 | 51 | else |
|
59 | # Valid user | |
|
60 | self.logged_user = user | |
|
61 | # generate a key and set cookie if autologin | |
|
62 | if params[:autologin] && Setting.autologin? | |
|
63 | token = Token.create(:user => user, :action => 'autologin') | |
|
64 | cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } | |
|
65 | end | |
|
66 | redirect_back_or_default :controller => 'my', :action => 'page' | |
|
52 | open_id_authenticate(params[:openid_url]) | |
|
67 | 53 | end |
|
68 | 54 | end |
|
69 | 55 | end |
@@ -191,4 +177,59 private | |||
|
191 | 177 | session[:user_id] = nil |
|
192 | 178 | end |
|
193 | 179 | end |
|
180 | ||
|
181 | def password_authentication | |
|
182 | user = User.try_to_login(params[:username], params[:password]) | |
|
183 | if user.nil? | |
|
184 | # Invalid credentials | |
|
185 | flash.now[:error] = l(:notice_account_invalid_creditentials) | |
|
186 | elsif user.new_record? | |
|
187 | # Onthefly creation failed, display the registration form to fill/fix attributes | |
|
188 | @user = user | |
|
189 | session[:auth_source_registration] = {:login => user.login, :auth_source_id => user.auth_source_id } | |
|
190 | render :action => 'register' | |
|
191 | else | |
|
192 | # Valid user | |
|
193 | successful_authentication(user) | |
|
194 | end | |
|
195 | end | |
|
196 | ||
|
197 | ||
|
198 | def open_id_authenticate(openid_url) | |
|
199 | user = nil | |
|
200 | authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url) do |result, identity_url, registration| | |
|
201 | if result.successful? | |
|
202 | user = User.find_or_initialize_by_identity_url(identity_url) | |
|
203 | if user.new_record? | |
|
204 | # Create on the fly | |
|
205 | # TODO: name | |
|
206 | user.login = registration['nickname'] | |
|
207 | user.mail = registration['email'] | |
|
208 | user.save | |
|
209 | end | |
|
210 | ||
|
211 | user.reload | |
|
212 | if user.new_record? | |
|
213 | # Onthefly creation failed, display the registration form to fill/fix attributes | |
|
214 | @user = user | |
|
215 | session[:auth_source_registration] = {:login => user.login, :identity_url => identity_url } | |
|
216 | render :action => 'register' | |
|
217 | else | |
|
218 | successful_authentication(user) | |
|
219 | end | |
|
220 | end | |
|
221 | end | |
|
222 | end | |
|
223 | ||
|
224 | def successful_authentication(user) | |
|
225 | # Valid user | |
|
226 | self.logged_user = user | |
|
227 | # generate a key and set cookie if autologin | |
|
228 | if params[:autologin] && Setting.autologin? | |
|
229 | token = Token.create(:user => user, :action => 'autologin') | |
|
230 | cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } | |
|
231 | end | |
|
232 | redirect_back_or_default :controller => 'my', :action => 'page' | |
|
233 | end | |
|
234 | ||
|
194 | 235 | end |
@@ -11,6 +11,10 | |||
|
11 | 11 | <td align="left"><%= password_field_tag 'password', nil, :size => 40 %></td> |
|
12 | 12 | </tr> |
|
13 | 13 | <tr> |
|
14 | <td align="right"><label for="openid_url"><%=l(:field_identity_url)%></label></td> | |
|
15 | <td align="left"><%= text_field_tag "openid_url" %></td> | |
|
16 | </tr> | |
|
17 | <tr> | |
|
14 | 18 | <td></td> |
|
15 | 19 | <td align="left"> |
|
16 | 20 | <% if Setting.autologin? %> |
@@ -1,4 +1,4 | |||
|
1 | <h2><%=l(:label_register)%></h2> | |
|
1 | <h2><%=l(:label_register)%> <%=link_to l(:label_login_with_open_id_option), signin_url %></h2> | |
|
2 | 2 | |
|
3 | 3 | <% form_tag({:action => 'register'}, :class => "tabular") do %> |
|
4 | 4 | <%= error_messages_for 'user' %> |
@@ -29,6 +29,9 | |||
|
29 | 29 | <p><label for="user_language"><%=l(:field_language)%></label> |
|
30 | 30 | <%= select("user", "language", lang_options_for_select) %></p> |
|
31 | 31 | |
|
32 | <p><label for="user_identity_url"><%=l(:field_identity_url)%></label> | |
|
33 | <%= text_field 'user', 'identity_url' %></p> | |
|
34 | ||
|
32 | 35 | <% @user.custom_field_values.select {|v| v.editable? || v.required?}.each do |value| %> |
|
33 | 36 | <p><%= custom_field_tag_with_label :user, value %></p> |
|
34 | 37 | <% end %> |
@@ -15,6 +15,7 | |||
|
15 | 15 | <p><%= f.text_field :lastname, :required => true %></p> |
|
16 | 16 | <p><%= f.text_field :mail, :required => true %></p> |
|
17 | 17 | <p><%= f.select :language, lang_options_for_select %></p> |
|
18 | <p><%= f.text_field :identity_url %></p> | |
|
18 | 19 | |
|
19 | 20 | <% @user.custom_field_values.select(&:editable?).each do |value| %> |
|
20 | 21 | <p><%= custom_field_tag_with_label :user, value %></p> |
@@ -7,6 +7,7 | |||
|
7 | 7 | <p><%= f.text_field :lastname, :required => true %></p> |
|
8 | 8 | <p><%= f.text_field :mail, :required => true %></p> |
|
9 | 9 | <p><%= f.select :language, lang_options_for_select %></p> |
|
10 | <p><%= f.text_field :identity_url %></p> | |
|
10 | 11 | |
|
11 | 12 | <% @user.custom_field_values.each do |value| %> |
|
12 | 13 | <p><%= custom_field_tag_with_label :user, value %></p> |
@@ -255,4 +255,6 ActionController::Routing::Routes.draw do |map| | |||
|
255 | 255 | # Install the default route as the lowest priority. |
|
256 | 256 | map.connect ':controller/:action/:id' |
|
257 | 257 | map.connect 'robots.txt', :controller => 'welcome', :action => 'robots' |
|
258 | # Used for OpenID | |
|
259 | map.root :controller => 'account', :action => 'login' | |
|
258 | 260 | end |
@@ -147,6 +147,7 field_mail_notification: Email notifications | |||
|
147 | 147 | field_admin: Administrator |
|
148 | 148 | field_last_login_on: Last connection |
|
149 | 149 | field_language: Language |
|
150 | field_identity_url: OpenID URL | |
|
150 | 151 | field_effective_date: Date |
|
151 | 152 | field_password: Password |
|
152 | 153 | field_new_password: New password |
@@ -332,6 +333,7 label_information: Information | |||
|
332 | 333 | label_information_plural: Information |
|
333 | 334 | label_please_login: Please log in |
|
334 | 335 | label_register: Register |
|
336 | label_login_with_open_id_option: or login with OpenID | |
|
335 | 337 | label_password_lost: Lost password |
|
336 | 338 | label_home: Home |
|
337 | 339 | label_my_page: My page |
@@ -69,6 +69,8 html>body #content { min-height: 600px; } | |||
|
69 | 69 | #login-form table td {padding: 6px;} |
|
70 | 70 | #login-form label {font-weight: bold;} |
|
71 | 71 | |
|
72 | input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; } | |
|
73 | ||
|
72 | 74 | .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
|
73 | 75 | |
|
74 | 76 | /***** Links *****/ |
General Comments 0
You need to be logged in to leave comments.
Login now