From: Jaakko Kantojärvi Date: Wed, 30 Jan 2013 20:14:34 +0000 (+0200) Subject: Add option to disable username changing X-Git-Tag: v5.0.0~264^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ba65f2910b1285217326028655de057a702572af;p=wvm%2Fgitlab.git Add option to disable username changing This option allows to disable users from changing their username. This is very usefull in environments using strong internal authentication methods like ldap, pam or shibboleth. You can allow users to change theyr username in these environments, but then new users (users loging in first time) is blocked from gitlab is her username exists. --- diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index 1d1efb16f..051a66645 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -51,7 +51,9 @@ class ProfilesController < ApplicationController end def update_username - @user.update_attributes(username: params[:user][:username]) + if @user.can_change_username? + @user.update_attributes(username: params[:user][:username]) + end respond_to do |format| format.js diff --git a/app/models/user.rb b/app/models/user.rb index 10af9b8c1..7c3a876d7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -234,6 +234,10 @@ class User < ActiveRecord::Base keys.count == 0 end + def can_change_username? + Gitlab.config.gitlab.username_changing_enabled + end + def can_create_project? projects_limit > personal_projects.count end diff --git a/app/views/profiles/account.html.haml b/app/views/profiles/account.html.haml index 5465d1f96..5b6c298df 100644 --- a/app/views/profiles/account.html.haml +++ b/app/views/profiles/account.html.haml @@ -53,29 +53,30 @@ -%fieldset.update-username - %legend - Username - %small.cred.pull-right - Changing your username can have unintended side effects! - = form_for @user, url: update_username_profile_path, method: :put, remote: true do |f| - .padded - = f.label :username - .input - = f.text_field :username, required: true -   - %span.loading-gif.hide= image_tag "ajax_loader.gif" - %span.update-success.cgreen.hide - %i.icon-ok - Saved - %span.update-failed.cred.hide - %i.icon-remove - Failed - %ul.cred - %li It will change web url for personal projects. - %li It will change the git path to repositories for personal projects. - .input - = f.submit 'Save username', class: "btn btn-save" +- if current_user.can_change_username? + %fieldset.update-username + %legend + Username + %small.cred.pull-right + Changing your username can have unintended side effects! + = form_for @user, url: update_username_profile_path, method: :put, remote: true do |f| + .padded + = f.label :username + .input + = f.text_field :username, required: true +   + %span.loading-gif.hide= image_tag "ajax_loader.gif" + %span.update-success.cgreen.hide + %i.icon-ok + Saved + %span.update-failed.cred.hide + %i.icon-remove + Failed + %ul.cred + %li It will change web url for personal projects. + %li It will change the git path to repositories for personal projects. + .input + = f.submit 'Save username', class: "btn btn-save" - if Gitlab.config.gitlab.signup_enabled %fieldset.remove-account @@ -83,4 +84,4 @@ Remove account %small.cred.pull-right Before removing the account you must remove all projects! - = link_to 'Delete account', user_registration_path, confirm: "REMOVE #{current_user.name}? Are you sure?", method: :delete, class: "btn btn-remove delete-key btn-small pull-right" \ No newline at end of file + = link_to 'Delete account', user_registration_path, confirm: "REMOVE #{current_user.name}? Are you sure?", method: :delete, class: "btn btn-remove delete-key btn-small pull-right" diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 441544564..62761c80c 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -35,6 +35,7 @@ production: &base ## Project settings default_projects_limit: 10 # signup_enabled: true # default: false - Account passwords are not sent via the email if signup is enabled. + # username_changing_enabled: false # default: true - User can change her username/namespace ## Gravatar gravatar: diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index b3fba99eb..f7d18e671 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -57,6 +57,7 @@ Settings.gitlab['support_email'] ||= Settings.gitlab.email_from Settings.gitlab['url'] ||= Settings.send(:build_gitlab_url) Settings.gitlab['user'] ||= 'git' Settings.gitlab['signup_enabled'] ||= false +Settings.gitlab['username_changing_enabled'] = true if Settings.gitlab['username_changing_enabled'].nil? # # Gravatar