summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/users_controller.rb30
1 files changed, 26 insertions, 4 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 583ebac0..9b9d64e5 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -5,17 +5,17 @@ class UsersController < ApplicationController
5 # Private 5 # Private
6 6
7 before_action :login_required 7 before_action :login_required
8 before_action :find_user, :only => [:show, :edit, :update, :reset_otp, :deactivate, :reactivate] 8 before_action :find_user, :only => [:show, :edit, :update, :reset_otp, :deactivate, :reactivate, :grant_redaktion, :revoke_redaktion]
9 before_action :require_admin, :only => [:index, :new, :create, :reset_otp, :deactivate, :reactivate] 9 before_action :require_redaktion, :only => [:index]
10 before_action :require_admin, :only => [:new, :create, :reset_otp, :deactivate, :reactivate]
10 before_action :require_elevation, :only => [:new, :create, :reset_otp, :deactivate, :reactivate] 11 before_action :require_elevation, :only => [:new, :create, :reset_otp, :deactivate, :reactivate]
11 before_action :verify_status, :except => [:index] 12 before_action :verify_status, :except => [:index, :grant_redaktion, :revoke_redaktion]
12 13
13 layout 'admin' 14 layout 'admin'
14 15
15 ROLE_PRESETS = { 16 ROLE_PRESETS = {
16 "editor" => [], 17 "editor" => [],
17 "redaktion" => ["redaktion"], 18 "redaktion" => ["redaktion"],
18 "admin" => ["admin", "redaktion"]
19 }.freeze 19 }.freeze
20 20
21 GROUP_ORDER = [:admin, :redaktion, :editor, :alumni].freeze 21 GROUP_ORDER = [:admin, :redaktion, :editor, :alumni].freeze
@@ -74,6 +74,28 @@ class UsersController < ApplicationController
74 redirect_to users_path 74 redirect_to users_path
75 end 75 end
76 76
77 def grant_redaktion
78 return deny_role_access(:redaktion_required) unless current_user.redaktion?
79
80 case @user.grant_redaktion!(:actor => current_user)
81 when :granted then flash[:notice] = t("flash.users.redaktion_granted", :login => @user.login)
82 when :no_second_factor then flash[:error] = t("flash.users.redaktion_needs_otp", :login => @user.login)
83 end
84
85 redirect_to users_path
86 end
87
88 def revoke_redaktion
89 return deny_role_access(:redaktion_required) unless current_user.redaktion?
90
91 case @user.revoke_redaktion!(:actor => current_user)
92 when :revoked then flash[:notice] = t("flash.users.redaktion_revoked", :login => @user.login)
93 when :self then flash[:error] = t("flash.users.redaktion_not_self")
94 end
95
96 redirect_to users_path
97 end
98
77 def reset_otp 99 def reset_otp
78 @user.disable_otp!(:actor => current_user) 100 @user.disable_otp!(:actor => current_user)
79 flash[:notice] = t("flash.users.otp_reset", :login => @user.login) 101 flash[:notice] = t("flash.users.otp_reset", :login => @user.login)