32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| namespace :gitlab do
 | |
|   namespace :password do
 | |
|     desc "GitLab | Password | Reset a user's password"
 | |
|     task :reset, [:username] => :environment do |_, args|
 | |
|       username = args[:username] || Gitlab::TaskHelpers.prompt('Enter username: ')
 | |
|       abort('Username can not be empty.') if username.blank?
 | |
| 
 | |
|       user = User.find_by(username: username)
 | |
|       abort("Unable to find user with username #{username}.") unless user
 | |
| 
 | |
|       password = Gitlab::TaskHelpers.prompt_for_password
 | |
|       password_confirm = Gitlab::TaskHelpers.prompt_for_password('Confirm password: ')
 | |
| 
 | |
|       user.password = password
 | |
|       user.password_confirmation = password_confirm
 | |
|       user.send_only_admin_changed_your_password_notification!
 | |
| 
 | |
|       unless user.save
 | |
|         message = <<~EOF
 | |
|           Unable to change password of the user with username #{username}.
 | |
|           #{user.errors.full_messages.to_sentence}
 | |
|         EOF
 | |
| 
 | |
|         abort(message)
 | |
|       end
 | |
| 
 | |
|       puts "Password successfully updated for user with username #{username}."
 | |
|     end
 | |
|   end
 | |
| end
 |