diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-07-05 02:41:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-05 02:41:40 +0200 |
commit | 44b2ee3485ba0845e5910cefcb4b1e2f84f34470 (patch) | |
tree | cc91189c9b36aaf0a04d339455c6d238992753a9 /app/controllers/admin/users | |
parent | 1b4054256f9d3302b44f71627a23bb0902578867 (diff) |
Add customizable user roles (#18641)
* Add customizable user roles * Various fixes and improvements * Add migration for old settings and fix tootctl role management
Diffstat (limited to 'app/controllers/admin/users')
-rw-r--r-- | app/controllers/admin/users/roles_controller.rb | 33 | ||||
-rw-r--r-- | app/controllers/admin/users/two_factor_authentications_controller.rb | 21 |
2 files changed, 54 insertions, 0 deletions
diff --git a/app/controllers/admin/users/roles_controller.rb b/app/controllers/admin/users/roles_controller.rb new file mode 100644 index 000000000..0db50cee9 --- /dev/null +++ b/app/controllers/admin/users/roles_controller.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module Admin + class Users::RolesController < BaseController + before_action :set_user + + def show + authorize @user, :change_role? + end + + def update + authorize @user, :change_role? + + @user.current_account = current_account + + if @user.update(resource_params) + redirect_to admin_account_path(@user.account_id), notice: I18n.t('admin.accounts.change_role.changed_msg') + else + render :show + end + end + + private + + def set_user + @user = User.find(params[:user_id]) + end + + def resource_params + params.require(:user).permit(:role_id) + end + end +end diff --git a/app/controllers/admin/users/two_factor_authentications_controller.rb b/app/controllers/admin/users/two_factor_authentications_controller.rb new file mode 100644 index 000000000..5e3fb2b3c --- /dev/null +++ b/app/controllers/admin/users/two_factor_authentications_controller.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Admin + class Users::TwoFactorAuthenticationsController < BaseController + before_action :set_target_user + + def destroy + authorize @user, :disable_2fa? + @user.disable_two_factor! + log_action :disable_2fa, @user + UserMailer.two_factor_disabled(@user).deliver_later! + redirect_to admin_account_path(@user.account_id) + end + + private + + def set_target_user + @user = User.find(params[:user_id]) + end + end +end |