mirror of
https://github.com/discourse/discourse.git
synced 2024-12-25 15:03:42 +08:00
41 lines
1.0 KiB
Ruby
41 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module SecondFactor::Actions
|
|
class GrantAdmin < Base
|
|
def no_second_factors_enabled!(params)
|
|
user = find_user(params[:user_id])
|
|
AdminConfirmation.new(user, current_user).create_confirmation
|
|
nil
|
|
end
|
|
|
|
def second_factor_auth_required!(params)
|
|
user = find_user(params[:user_id])
|
|
description =
|
|
I18n.t("second_factor_auth.actions.grant_admin.description", username: "@#{user.username}")
|
|
{
|
|
callback_params: {
|
|
user_id: user.id,
|
|
},
|
|
redirect_url: admin_user_show_path(id: user.id, username: user.username),
|
|
description: description,
|
|
}
|
|
end
|
|
|
|
def second_factor_auth_completed!(callback_params)
|
|
user = find_user(callback_params[:user_id])
|
|
user.grant_admin!
|
|
StaffActionLogger.new(current_user).log_grant_admin(user)
|
|
nil
|
|
end
|
|
|
|
private
|
|
|
|
def find_user(id)
|
|
user = User.find_by(id: id)
|
|
raise Discourse::NotFound if !user
|
|
guardian.ensure_can_grant_admin!(user)
|
|
user
|
|
end
|
|
end
|
|
end
|