Added a system setting for allowing OpenID logins and registrations
* Defaults to off * Is set in the Administration panel under Authentication #699 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2449 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
85ad791d81
commit
8d53e433c5
|
@ -46,10 +46,10 @@ class AccountController < ApplicationController
|
||||||
self.logged_user = nil
|
self.logged_user = nil
|
||||||
else
|
else
|
||||||
# Authenticate user
|
# Authenticate user
|
||||||
unless using_open_id?
|
if using_open_id? && Setting.openid?
|
||||||
password_authentication
|
|
||||||
else
|
|
||||||
open_id_authenticate(params[:openid_url])
|
open_id_authenticate(params[:openid_url])
|
||||||
|
else
|
||||||
|
password_authentication
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,10 +10,12 @@
|
||||||
<td align="right"><label for="password"><%=l(:field_password)%>:</label></td>
|
<td align="right"><label for="password"><%=l(:field_password)%>:</label></td>
|
||||||
<td align="left"><%= password_field_tag 'password', nil, :size => 40 %></td>
|
<td align="left"><%= password_field_tag 'password', nil, :size => 40 %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<% if Setting.openid? %>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="right"><label for="openid_url"><%=l(:field_identity_url)%></label></td>
|
<td align="right"><label for="openid_url"><%=l(:field_identity_url)%></label></td>
|
||||||
<td align="left"><%= text_field_tag "openid_url" %></td>
|
<td align="left"><%= text_field_tag "openid_url" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<% end %>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td align="left">
|
<td align="left">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<h2><%=l(:label_register)%> <%=link_to l(:label_login_with_open_id_option), signin_url %></h2>
|
<h2><%=l(:label_register)%><%=link_to l(:label_login_with_open_id_option), signin_url if Setting.openid? %></h2>
|
||||||
|
|
||||||
<% form_tag({:action => 'register'}, :class => "tabular") do %>
|
<% form_tag({:action => 'register'}, :class => "tabular") do %>
|
||||||
<%= error_messages_for 'user' %>
|
<%= error_messages_for 'user' %>
|
||||||
|
@ -29,8 +29,10 @@
|
||||||
<p><label for="user_language"><%=l(:field_language)%></label>
|
<p><label for="user_language"><%=l(:field_language)%></label>
|
||||||
<%= select("user", "language", lang_options_for_select) %></p>
|
<%= select("user", "language", lang_options_for_select) %></p>
|
||||||
|
|
||||||
|
<% if Setting.openid? %>
|
||||||
<p><label for="user_identity_url"><%=l(:field_identity_url)%></label>
|
<p><label for="user_identity_url"><%=l(:field_identity_url)%></label>
|
||||||
<%= text_field 'user', 'identity_url' %></p>
|
<%= text_field 'user', 'identity_url' %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% @user.custom_field_values.select {|v| v.editable? || v.required?}.each do |value| %>
|
<% @user.custom_field_values.select {|v| v.editable? || v.required?}.each do |value| %>
|
||||||
<p><%= custom_field_tag_with_label :user, value %></p>
|
<p><%= custom_field_tag_with_label :user, value %></p>
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
|
|
||||||
<p><label><%= l(:label_password_lost) %></label>
|
<p><label><%= l(:label_password_lost) %></label>
|
||||||
<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p>
|
<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p>
|
||||||
|
|
||||||
|
<p><label><%= l(:setting_openid) %></label>
|
||||||
|
<%= check_box_tag 'settings[openid]', 1, Setting.openid? %><%= hidden_field_tag 'settings[openid]', 0 %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="float:right;">
|
<div style="float:right;">
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
<p><%= f.text_field :lastname, :required => true %></p>
|
<p><%= f.text_field :lastname, :required => true %></p>
|
||||||
<p><%= f.text_field :mail, :required => true %></p>
|
<p><%= f.text_field :mail, :required => true %></p>
|
||||||
<p><%= f.select :language, lang_options_for_select %></p>
|
<p><%= f.select :language, lang_options_for_select %></p>
|
||||||
|
<% if Setting.openid? %>
|
||||||
<p><%= f.text_field :identity_url %></p>
|
<p><%= f.text_field :identity_url %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% @user.custom_field_values.each do |value| %>
|
<% @user.custom_field_values.each do |value| %>
|
||||||
<p><%= custom_field_tag_with_label :user, value %></p>
|
<p><%= custom_field_tag_with_label :user, value %></p>
|
||||||
|
|
|
@ -143,3 +143,5 @@ emails_footer:
|
||||||
To change your notification preferences, please click here: http://hostname/my/account
|
To change your notification preferences, please click here: http://hostname/my/account
|
||||||
gravatar_enabled:
|
gravatar_enabled:
|
||||||
default: 0
|
default: 0
|
||||||
|
openid:
|
||||||
|
default: 0
|
||||||
|
|
|
@ -229,6 +229,7 @@ setting_sequential_project_identifiers: Generate sequential project identifiers
|
||||||
setting_gravatar_enabled: Use Gravatar user icons
|
setting_gravatar_enabled: Use Gravatar user icons
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
|
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
|
||||||
|
setting_openid: Allow OpenID login and registration
|
||||||
|
|
||||||
permission_edit_project: Edit project
|
permission_edit_project: Edit project
|
||||||
permission_select_project_modules: Select project modules
|
permission_select_project_modules: Select project modules
|
||||||
|
|
|
@ -66,6 +66,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_for_existing_user
|
def test_login_with_openid_for_existing_user
|
||||||
Setting.self_registration = '3'
|
Setting.self_registration = '3'
|
||||||
|
Setting.openid = '1'
|
||||||
existing_user = User.new(:firstname => 'Cool',
|
existing_user = User.new(:firstname => 'Cool',
|
||||||
:lastname => 'User',
|
:lastname => 'User',
|
||||||
:mail => 'user@somedomain.com',
|
:mail => 'user@somedomain.com',
|
||||||
|
@ -79,6 +80,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_with_new_user_created
|
def test_login_with_openid_with_new_user_created
|
||||||
Setting.self_registration = '3'
|
Setting.self_registration = '3'
|
||||||
|
Setting.openid = '1'
|
||||||
post :login, :openid_url => 'http://openid.example.com/good_user'
|
post :login, :openid_url => 'http://openid.example.com/good_user'
|
||||||
assert_redirected_to 'my/account'
|
assert_redirected_to 'my/account'
|
||||||
user = User.find_by_login('cool_user')
|
user = User.find_by_login('cool_user')
|
||||||
|
@ -89,6 +91,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_with_new_user_and_self_registration_off
|
def test_login_with_openid_with_new_user_and_self_registration_off
|
||||||
Setting.self_registration = '0'
|
Setting.self_registration = '0'
|
||||||
|
Setting.openid = '1'
|
||||||
post :login, :openid_url => 'http://openid.example.com/good_user'
|
post :login, :openid_url => 'http://openid.example.com/good_user'
|
||||||
assert_redirected_to home_url
|
assert_redirected_to home_url
|
||||||
user = User.find_by_login('cool_user')
|
user = User.find_by_login('cool_user')
|
||||||
|
@ -97,6 +100,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token
|
def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token
|
||||||
Setting.self_registration = '1'
|
Setting.self_registration = '1'
|
||||||
|
Setting.openid = '1'
|
||||||
post :login, :openid_url => 'http://openid.example.com/good_user'
|
post :login, :openid_url => 'http://openid.example.com/good_user'
|
||||||
assert_redirected_to 'login'
|
assert_redirected_to 'login'
|
||||||
user = User.find_by_login('cool_user')
|
user = User.find_by_login('cool_user')
|
||||||
|
@ -108,6 +112,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_with_new_user_created_with_manual_activation
|
def test_login_with_openid_with_new_user_created_with_manual_activation
|
||||||
Setting.self_registration = '2'
|
Setting.self_registration = '2'
|
||||||
|
Setting.openid = '1'
|
||||||
post :login, :openid_url => 'http://openid.example.com/good_user'
|
post :login, :openid_url => 'http://openid.example.com/good_user'
|
||||||
assert_redirected_to 'login'
|
assert_redirected_to 'login'
|
||||||
user = User.find_by_login('cool_user')
|
user = User.find_by_login('cool_user')
|
||||||
|
@ -117,6 +122,7 @@ class AccountControllerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_login_with_openid_with_new_user_with_conflict_should_register
|
def test_login_with_openid_with_new_user_with_conflict_should_register
|
||||||
Setting.self_registration = '3'
|
Setting.self_registration = '3'
|
||||||
|
Setting.openid = '1'
|
||||||
existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com')
|
existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com')
|
||||||
existing_user.login = 'cool_user'
|
existing_user.login = 'cool_user'
|
||||||
assert existing_user.save!
|
assert existing_user.save!
|
||||||
|
|
Loading…
Reference in New Issue