From 7aaf3692b3856fa4d11bfc51ef4ab18c7405fc06 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Fri, 16 Jun 2017 15:06:14 +0200 Subject: add create and destroy services for emails --- app/services/emails/base_service.rb | 15 +++++++++++++++ app/services/emails/create_service.rb | 9 +++++++++ app/services/emails/destroy_service.rb | 9 +++++++++ 3 files changed, 33 insertions(+) create mode 100644 app/services/emails/base_service.rb create mode 100644 app/services/emails/create_service.rb create mode 100644 app/services/emails/destroy_service.rb (limited to 'app/services/emails') diff --git a/app/services/emails/base_service.rb b/app/services/emails/base_service.rb new file mode 100644 index 00000000000..0f8617c08bb --- /dev/null +++ b/app/services/emails/base_service.rb @@ -0,0 +1,15 @@ +module Emails + class BaseService + def initialize(current_user, user, opts) + @current_user = current_user + @user = user + @email = opts[:email] + end + + private + + def can_manage_emails? + @current_user == @user || @current_user.admin? + end + end +end diff --git a/app/services/emails/create_service.rb b/app/services/emails/create_service.rb new file mode 100644 index 00000000000..5d5655256fa --- /dev/null +++ b/app/services/emails/create_service.rb @@ -0,0 +1,9 @@ +module Emails + class CreateService < BaseService + def execute(skip_authorization: false) + raise Gitlab::Access::AccessDeniedError unless skip_authorization || can_manage_emails? + + @user.emails.create!(email: @email) + end + end +end diff --git a/app/services/emails/destroy_service.rb b/app/services/emails/destroy_service.rb new file mode 100644 index 00000000000..5080c08c473 --- /dev/null +++ b/app/services/emails/destroy_service.rb @@ -0,0 +1,9 @@ +module Emails + class DestroyService < BaseService + def execute(skip_authorization: false) + raise Gitlab::Access::AccessDeniedError unless skip_authorization || can_manage_emails? + + Email.find_by_email(@email).destroy! + end + end +end -- cgit v1.2.1