OSDN Git Service

Add option to disable username changing
authorJaakko Kantojärvi <jaakko@n-1.fi>
Wed, 30 Jan 2013 20:14:34 +0000 (22:14 +0200)
committerJaakko Kantojärvi <jaakko@n-1.fi>
Thu, 14 Feb 2013 15:58:56 +0000 (17:58 +0200)
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.

app/controllers/profiles_controller.rb
app/models/user.rb
app/views/profiles/account.html.haml
config/gitlab.yml.example
config/initializers/1_settings.rb

index 1d1efb1..051a666 100644 (file)
@@ -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
index 10af9b8..7c3a876 100644 (file)
@@ -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
index 5465d1f..5b6c298 100644 (file)
 
 
 
-%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
-        &nbsp;
-        %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
+          &nbsp;
+          %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"
index 4415445..62761c8 100644 (file)
@@ -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:
index b3fba99..f7d18e6 100644 (file)
@@ -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