summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/profiles/avatars_controller.rb4
-rw-r--r--app/controllers/profiles/emails_controller.rb5
-rw-r--r--app/controllers/profiles/two_factor_auths_controller.rb3
-rw-r--r--app/services/users/update_service.rb6
-rw-r--r--spec/services/emails/create_service_spec.rb10
-rw-r--r--spec/services/emails/destroy_service_spec.rb12
6 files changed, 9 insertions, 31 deletions
diff --git a/app/controllers/profiles/avatars_controller.rb b/app/controllers/profiles/avatars_controller.rb
index cab9ea24270..851885d2224 100644
--- a/app/controllers/profiles/avatars_controller.rb
+++ b/app/controllers/profiles/avatars_controller.rb
@@ -2,9 +2,7 @@ class Profiles::AvatarsController < Profiles::ApplicationController
def destroy
@user = current_user
- Users::UpdateService.new(@user, @user).execute do |user|
- user.remove_avatar!
- end
+ Users::UpdateService.new(@user, @user).execute { |user| user.remove_avatar! }
redirect_to profile_path, status: 302
end
diff --git a/app/controllers/profiles/emails_controller.rb b/app/controllers/profiles/emails_controller.rb
index 5c7a5fa9a64..7ea94c59aa7 100644
--- a/app/controllers/profiles/emails_controller.rb
+++ b/app/controllers/profiles/emails_controller.rb
@@ -5,9 +5,9 @@ class Profiles::EmailsController < Profiles::ApplicationController
end
def create
- @email = current_user.emails.new(email_params)
+ @email = Emails::CreateService.new(current_user, current_user, email_params).execute
- if Emails::CreateService.new(current_user, current_user, email_params).execute
+ if @email.errors.blank?
NotificationService.new.new_email(@email)
else
flash[:alert] = @email.errors.full_messages.first
@@ -18,6 +18,7 @@ class Profiles::EmailsController < Profiles::ApplicationController
def destroy
@email = current_user.emails.find(params[:id])
+
Emails::DestroyService.new(current_user, current_user, email: @email.email).execute
respond_to do |format|
diff --git a/app/controllers/profiles/two_factor_auths_controller.rb b/app/controllers/profiles/two_factor_auths_controller.rb
index 95e05dff80a..b590846257b 100644
--- a/app/controllers/profiles/two_factor_auths_controller.rb
+++ b/app/controllers/profiles/two_factor_auths_controller.rb
@@ -41,8 +41,7 @@ class Profiles::TwoFactorAuthsController < Profiles::ApplicationController
def create
if current_user.validate_and_consume_otp!(params[:pin_code])
- Users::UpdateService.new(current_user, current_user).execute! do |user|
- user.otp_required_for_login = true
+ Users::UpdateService.new(current_user, current_user, otp_required_for_login: true).execute! do |user|
@codes = user.generate_otp_backup_codes!
end
diff --git a/app/services/users/update_service.rb b/app/services/users/update_service.rb
index 56e8739ab5e..33f3686c8d5 100644
--- a/app/services/users/update_service.rb
+++ b/app/services/users/update_service.rb
@@ -17,10 +17,12 @@ module Users
end
end
- def execute!(skip_authorization: false, &block)
+ def execute!(*args, &block)
result = execute(*args, &block)
- raise SomeCustomException(result[:message]) unless result[:status] == :success
+ raise ActiveRecord::RecordInvalid(result[:message]) unless result[:status] == :success
+
+ true
end
private
diff --git a/spec/services/emails/create_service_spec.rb b/spec/services/emails/create_service_spec.rb
index 9981f5fcc2b..76bf35d34e8 100644
--- a/spec/services/emails/create_service_spec.rb
+++ b/spec/services/emails/create_service_spec.rb
@@ -17,15 +17,5 @@ describe Emails::CreateService, services: true do
expect(user.emails).to eq(Email.where(opts))
end
-
- it 'does not create an email if the user has no permissions' do
- expect { described_class.new(create(:user), user, opts).execute }.to raise_error(Gitlab::Access::AccessDeniedError)
- end
-
- it 'creates an email if we skip authorization' do
- expect do
- described_class.new(create(:user), user, opts).execute(skip_authorization: true)
- end.to change { Email.count }.by(1)
- end
end
end
diff --git a/spec/services/emails/destroy_service_spec.rb b/spec/services/emails/destroy_service_spec.rb
index 6db050148cb..3f5192b620e 100644
--- a/spec/services/emails/destroy_service_spec.rb
+++ b/spec/services/emails/destroy_service_spec.rb
@@ -10,17 +10,5 @@ describe Emails::DestroyService, services: true do
it 'removes an email' do
expect { service.execute }.to change { user.emails.count }.by(-1)
end
-
- it 'does not remove an email if the user has no permissions' do
- expect do
- described_class.new(create(:user), user, email: email.email).execute
- end.to raise_error(Gitlab::Access::AccessDeniedError)
- end
-
- it 'removes an email if we skip authorization' do
- expect do
- described_class.new(create(:user), user, email: email.email).execute(skip_authorization: true)
- end.to change { Email.count }.by(-1)
- end
end
end