summaryrefslogtreecommitdiff
path: root/app/services/users/create_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/users/create_service.rb')
-rw-r--r--app/services/users/create_service.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/services/users/create_service.rb b/app/services/users/create_service.rb
new file mode 100644
index 00000000000..74abc017cea
--- /dev/null
+++ b/app/services/users/create_service.rb
@@ -0,0 +1,22 @@
+module Users
+ class CreateService < BaseService
+ def initialize(current_user, params = {})
+ @current_user = current_user
+ @params = params.dup
+ end
+
+ def execute(skip_authorization: false)
+ user = Users::BuildService.new(current_user, params).execute(skip_authorization: skip_authorization)
+
+ @reset_token = user.generate_reset_token if user.recently_sent_password_reset?
+
+ if user.save
+ log_info("User \"#{user.name}\" (#{user.email}) was created")
+ notification_service.new_user(user, @reset_token) if @reset_token
+ system_hook_service.execute_hooks_for(user, :create)
+ end
+
+ user
+ end
+ end
+end