1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
# frozen_string_literal: true
module Users
class ResetFeedTokenService < BaseService
VALID_SOURCES = %i[self group_token_revocation_service].freeze
def initialize(current_user = nil, user: nil, source: nil)
@current_user = current_user
@user = user
@source = source
@source = :self if @current_user && !@source
raise ArgumentError unless user
raise ArgumentError unless VALID_SOURCES.include?(@source)
end
def execute
return ServiceResponse.error(message: s_('Not permitted to reset user feed token')) unless reset_permitted?
result = Users::UpdateService.new(current_user, user: user).execute(&:reset_feed_token!)
if result[:status] == :success
log_event
ServiceResponse.success(message: success_message)
else
ServiceResponse.error(message: error_message)
end
end
private
attr_reader :user, :source
def error_message
s_('Profiles|Feed token could not be reset')
end
def success_message
s_('Profiles|Feed token was successfully reset')
end
def reset_permitted?
case source
when :self
Ability.allowed?(current_user, :update_user, user)
when :group_token_revocation_service
true
end
end
def log_event
Gitlab::AppLogger.info(
class: self.class.name,
message: "User Feed Token Reset",
source: source,
reset_by: current_user&.username,
reset_for: user.username,
user_id: user.id)
end
end
end
|