File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,7 +39,7 @@ def user_params
3939 end
4040
4141 def assign_role_if_allowed
42- return unless current_user &.superadmin ?
42+ return unless current_user &.role_superadmin ?
4343
4444 requested_role = params . dig ( :user , :role ) . to_s
4545 return if requested_role . blank?
Original file line number Diff line number Diff line change 2727 background-color : # dc3545 ;
2828 }
2929
30+
3031 .action-buttons {
3132 padding : 5px ;
3233 }
Original file line number Diff line number Diff line change 1+ require "test_helper"
2+ require "securerandom"
3+
4+ class Admin ::UsersControllerTest < ActionDispatch ::IntegrationTest
5+ setup do
6+ @target_user = create_user ( name : "Target User" , role : :user )
7+ end
8+
9+ test "superadmin can update another user's role" do
10+ superadmin = create_user ( name : "Super Admin" , role : :superadmin )
11+ sign_in_as ( superadmin )
12+
13+ patch admin_user_url ( @target_user ) , params : {
14+ user : {
15+ name : @target_user . name ,
16+ slack_id : @target_user . slack_id ,
17+ ysws_eligible : "1" ,
18+ role : "admin"
19+ }
20+ }
21+
22+ assert_redirected_to admin_users_url
23+ assert_equal "admin" , @target_user . reload . role
24+ end
25+
26+ test "admin cannot escalate another user's role" do
27+ admin = create_user ( name : "Admin User" , role : :admin )
28+ sign_in_as ( admin )
29+
30+ patch admin_user_url ( @target_user ) , params : {
31+ user : {
32+ name : "Updated Name" ,
33+ slack_id : @target_user . slack_id ,
34+ ysws_eligible : "0" ,
35+ role : "superadmin"
36+ }
37+ }
38+
39+ assert_redirected_to admin_users_url
40+ @target_user . reload
41+ assert_equal "user" , @target_user . role
42+ assert_equal "Updated Name" , @target_user . name
43+ end
44+
45+ private
46+
47+ def create_user ( name :, role :)
48+ User . create! (
49+ name : name ,
50+ slack_id : "U#{ SecureRandom . hex ( 4 ) } " ,
51+ verified : 1 ,
52+ ysws_eligible : false ,
53+ role : role
54+ )
55+ end
56+ end
You can’t perform that action at this time.
0 commit comments