diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 9f5200ee..b9c6d978 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -46,10 +46,10 @@ class AccountController < ApplicationController self.logged_user = nil else # Authenticate user - unless using_open_id? - password_authentication - else + if using_open_id? && Setting.openid? open_id_authenticate(params[:openid_url]) + else + password_authentication end end end diff --git a/app/views/account/login.rhtml b/app/views/account/login.rhtml index d7a27821..c55419d8 100644 --- a/app/views/account/login.rhtml +++ b/app/views/account/login.rhtml @@ -10,10 +10,12 @@
<%= select("user", "language", lang_options_for_select) %>
+<% if Setting.openid? %><%= text_field 'user', 'identity_url' %>
+<% end %> <% @user.custom_field_values.select {|v| v.editable? || v.required?}.each do |value| %><%= custom_field_tag_with_label :user, value %>
diff --git a/app/views/settings/_authentication.rhtml b/app/views/settings/_authentication.rhtml index 6bf20cbc..16bc16f1 100644 --- a/app/views/settings/_authentication.rhtml +++ b/app/views/settings/_authentication.rhtml @@ -17,6 +17,9 @@<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %>
+ ++<%= check_box_tag 'settings[openid]', 1, Setting.openid? %><%= hidden_field_tag 'settings[openid]', 0 %>
<%= f.text_field :lastname, :required => true %>
<%= f.text_field :mail, :required => true %>
<%= f.select :language, lang_options_for_select %>
+<% if Setting.openid? %><%= f.text_field :identity_url %>
+<% end %> <% @user.custom_field_values.each do |value| %><%= custom_field_tag_with_label :user, value %>
diff --git a/config/settings.yml b/config/settings.yml index 1aba0644..73b4c4cf 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -143,3 +143,5 @@ emails_footer: To change your notification preferences, please click here: http://hostname/my/account gravatar_enabled: default: 0 +openid: + default: 0 diff --git a/lang/en.yml b/lang/en.yml index a75a5299..1bb9fff8 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -229,6 +229,7 @@ setting_sequential_project_identifiers: Generate sequential project identifiers setting_gravatar_enabled: Use Gravatar user icons 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_openid: Allow OpenID login and registration permission_edit_project: Edit project permission_select_project_modules: Select project modules diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index aec626a2..a95ae5bd 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -66,6 +66,7 @@ class AccountControllerTest < Test::Unit::TestCase def test_login_with_openid_for_existing_user Setting.self_registration = '3' + Setting.openid = '1' existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com', @@ -79,6 +80,7 @@ class AccountControllerTest < Test::Unit::TestCase def test_login_with_openid_with_new_user_created Setting.self_registration = '3' + Setting.openid = '1' post :login, :openid_url => 'http://openid.example.com/good_user' assert_redirected_to 'my/account' 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 Setting.self_registration = '0' + Setting.openid = '1' post :login, :openid_url => 'http://openid.example.com/good_user' assert_redirected_to home_url 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 Setting.self_registration = '1' + Setting.openid = '1' post :login, :openid_url => 'http://openid.example.com/good_user' assert_redirected_to 'login' 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 Setting.self_registration = '2' + Setting.openid = '1' post :login, :openid_url => 'http://openid.example.com/good_user' assert_redirected_to 'login' 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 Setting.self_registration = '3' + Setting.openid = '1' existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com') existing_user.login = 'cool_user' assert existing_user.save!