diff options
author | Joost Rijneveld <joost@joostrijneveld.nl> | 2017-02-03 15:49:27 +0100 |
---|---|---|
committer | Joost Rijneveld <joost@joostrijneveld.nl> | 2017-02-09 20:32:54 +0100 |
commit | 6fab6d94cef853ed0d081dcea0fbfe390047b1c8 (patch) | |
tree | 4aa62ba92455257e6b8ceeb8779044d9b25bb1d3 /lib | |
parent | 52ea505126da19717c9137e6bb301f55965eb6e4 (diff) | |
download | gitlab-ce-6fab6d94cef853ed0d081dcea0fbfe390047b1c8.tar.gz |
Optionally make users created via the API set their password
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/users.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/api/users.rb b/lib/api/users.rb index 0ed468626b7..500697af633 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -82,7 +82,9 @@ module API end params do requires :email, type: String, desc: 'The email of the user' - requires :password, type: String, desc: 'The password of the new user' + optional :password, type: String, desc: 'The password of the new user' + optional :reset_password, type: Boolean, desc: 'Flag indicating the user will be sent a password reset token' + at_least_one_of :password, :reset_password requires :name, type: String, desc: 'The name of the user' requires :username, type: String, desc: 'The username of the user' use :optional_attributes @@ -94,8 +96,18 @@ module API user_params = declared_params(include_missing: false) identity_attrs = user_params.slice(:provider, :extern_uid) confirm = user_params.delete(:confirm) + user = User.new(user_params.except(:extern_uid, :provider, :reset_password)) + + if user_params.delete(:reset_password) + user.attributes = { + force_random_password: true, + password_expires_at: nil, + created_by_id: current_user.id + } + user.generate_password + user.generate_reset_token + end - user = User.new(user_params.except(:extern_uid, :provider)) user.skip_confirmation! unless confirm if identity_attrs.any? |