refactor emails service

This commit is contained in:
James Lopez 2017-06-22 08:55:07 +02:00
parent 0c8e7f49d1
commit 785cbb79e2
5 changed files with 14 additions and 20 deletions

View file

@ -136,7 +136,7 @@ class Admin::UsersController < Admin::ApplicationController
# restore username to keep form action url.
user.username = params[:id]
format.html { render "edit" }
format.json { render json: result[:message], status: result[:status] }
format.json { render json: [result[:message]], status: result[:status] }
end
end
end
@ -152,11 +152,7 @@ class Admin::UsersController < Admin::ApplicationController
def remove_email
email = user.emails.find(params[:email_id])
Emails::DestroyService.new(current_user, self, email: email.email).execute
result = Users::UpdateService.new(current_user, @user).execute do |user|
user.update_secondary_emails!
end
Emails::DestroyService.new(current_user, user, email: email.email).execute
respond_to do |format|
if result[:status] == :success

View file

@ -18,9 +18,7 @@ class Profiles::EmailsController < Profiles::ApplicationController
def destroy
@email = current_user.emails.find(params[:id])
Emails::DestroyService.new(self, self, email: @email.email).execute
Users::UpdateService.new(current_user, current_user).execute { |user| user.update_secondary_emails! }
Emails::DestroyService.new(current_user, current_user, email: @email.email).execute
respond_to do |format|
format.html { redirect_to profile_emails_url, status: 302 }

View file

@ -496,8 +496,6 @@ class User < ActiveRecord::Base
if primary_email_record
Emails::DestroyService.new(self, self, email: email).execute
Emails::CreateService.new(self, self, email: email_was).execute
update_secondary_emails!
end
end

View file

@ -3,7 +3,17 @@ module Emails
def execute(skip_authorization: false)
raise Gitlab::Access::AccessDeniedError unless skip_authorization || can_manage_emails?
Email.find_by_email(@email).destroy
Email.find_by_email(@email).destroy && update_secondary_emails!
end
private
def update_secondary_emails!
result = ::Users::UpdateService.new(@current_user, @current_user).execute do |user|
user.update_secondary_emails!
end
result[:status] == 'success'
end
end
end

View file

@ -275,10 +275,6 @@ module API
not_found!('Email') unless email
Emails::DestroyService.new(current_user, user, email: email.email).execute(skip_authorization: true)
::Users::UpdateService.new(current_user, user).execute do |user|
user.update_secondary_emails!
end
end
desc 'Delete a user. Available only for admins.' do
@ -509,10 +505,6 @@ module API
not_found!('Email') unless email
Emails::DestroyService.new(current_user, current_user, email: email.email).execute
::Users::UpdateService.new(current_user, current_user).execute do |user|
user.update_secondary_emails!
end
end
desc 'Get a list of user activities'