32 lines
780 B
Ruby
32 lines
780 B
Ruby
|
module Carto
|
||
|
class UserMultifactorAuthUpdateService
|
||
|
|
||
|
def initialize(user_id:)
|
||
|
@user_id = user_id
|
||
|
end
|
||
|
|
||
|
def update(enabled:, type: Carto::UserMultifactorAuth::TYPE_TOTP)
|
||
|
enabled ? create_user_multifactor_auth(type) : destroy_user_multifactor_auth(type)
|
||
|
end
|
||
|
|
||
|
def exists?(type: Carto::UserMultifactorAuth::TYPE_TOTP)
|
||
|
user_multifactor_auth(type).present?
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def create_user_multifactor_auth(type)
|
||
|
Carto::UserMultifactorAuth.create!(user_id: @user_id, type: type) unless exists?
|
||
|
end
|
||
|
|
||
|
def destroy_user_multifactor_auth(type)
|
||
|
user_multifactor_auth(type).each(&:destroy!)
|
||
|
end
|
||
|
|
||
|
def user_multifactor_auth(type)
|
||
|
Carto::UserMultifactorAuth.where(user_id: @user_id, type: type)
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|