Description:
add TA roles
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r799:584294790340 - - 6 files changed: 82 inserted, 53 deleted

@@ -85,27 +85,26
85 @submission = Submission.find(params[:id])
85 @submission = Submission.find(params[:id])
86 @task = @submission.task
86 @task = @submission.task
87 @task.status_inqueue! if @task
87 @task.status_inqueue! if @task
88 respond_to do |format|
88 respond_to do |format|
89 format.js
89 format.js
90 end
90 end
91 end
91 end
92
92
93 protected
93 protected
94
94
95 def submission_authorization
95 def submission_authorization
96 #admin always has privileged
96 #admin always has privileged
97 - if @current_user.admin?
97 + return true if @current_user.admin?
98 - return true
98 + return true if @current_user.has_role?('TA') && (['show','download'].include? action_name)
99 - end
100
99
101 sub = Submission.find(params[:id])
100 sub = Submission.find(params[:id])
102 if @current_user.available_problems.include? sub.problem
101 if @current_user.available_problems.include? sub.problem
103 return true if GraderConfiguration["right.user_view_submission"] or sub.user == @current_user
102 return true if GraderConfiguration["right.user_view_submission"] or sub.user == @current_user
104 end
103 end
105
104
106 #default to NO
105 #default to NO
107 unauthorized_redirect
106 unauthorized_redirect
108 return false
107 return false
109 end
108 end
110
109
111
110
@@ -353,54 +353,51
353 if params[:reset_timer]
353 if params[:reset_timer]
354 logout_users(users)
354 logout_users(users)
355 end
355 end
356
356
357 flash[:notice] = 'User(s) ' + note.join(', ') +
357 flash[:notice] = 'User(s) ' + note.join(', ') +
358 ' were successfully modified. '
358 ' were successfully modified. '
359 redirect_to :action => 'contest_management'
359 redirect_to :action => 'contest_management'
360 end
360 end
361
361
362 # admin management
362 # admin management
363
363
364 def admin
364 def admin
365 - @admins = User.all.find_all {|user| user.admin? }
365 + @admins = Role.where(name: 'admin').take.users
366 + @tas = Role.where(name: 'ta').take.users
366 end
367 end
367
368
368 - def grant_admin
369 + def modify_role
369 - login = params[:login]
370 + user = User.find_by_login(params[:login])
370 - user = User.find_by_login(login)
371 + role = Role.find_by_name(params[:role])
371 - if user!=nil
372 + unless user && role
372 - admin_role = Role.find_by_name('admin')
373 + flash[:error] = 'Unknown user or role'
373 - user.roles << admin_role
374 + redirect_to admin_user_admin_index_path
374 - else
375 + return
375 - flash[:notice] = 'Unknown user'
376 end
376 end
377 - flash[:notice] = 'User added as admins'
377 + if params[:commit] == 'Grant'
378 - redirect_to :action => 'admin'
378 + #grant role
379 - end
379 + user.roles << role
380 -
380 + flash[:notice] = "User '#{user.login}' has been granted the role '#{role.name}'"
381 - def revoke_admin
381 + else
382 - user = User.find(params[:id])
382 + #revoke role
383 - if user==nil
383 + if user.login == 'root' && role.name == 'admin'
384 - flash[:notice] = 'Unknown user'
384 + flash[:error] = 'You cannot revoke admisnistrator permission from root.'
385 - redirect_to :action => 'admin' and return
385 + redirect_to admin_user_admin_index_path
386 - elsif user.login == 'root'
386 + return
387 - flash[:notice] = 'You cannot revoke admisnistrator permission from root.'
387 + end
388 - redirect_to :action => 'admin' and return
388 + user.roles.delete(role)
389 + flash[:notice] = "The role '#{role.name}' has been revoked from User '#{user.login}'"
389 end
390 end
390 -
391 + redirect_to admin_user_admin_index_path
391 - admin_role = Role.find_by_name('admin')
392 - user.roles.delete(admin_role)
393 - flash[:notice] = 'User permission revoked'
394 - redirect_to :action => 'admin'
395 end
392 end
396
393
397 # mass mailing
394 # mass mailing
398
395
399 def mass_mailing
396 def mass_mailing
400 end
397 end
401
398
402 def bulk_mail
399 def bulk_mail
403 lines = params[:login_list]
400 lines = params[:login_list]
404 if !lines or lines.blank?
401 if !lines or lines.blank?
405 flash[:notice] = 'You entered an empty list.'
402 flash[:notice] = 'You entered an empty list.'
406 redirect_to :action => 'mass_mailing' and return
403 redirect_to :action => 'mass_mailing' and return
@@ -72,25 +72,29
72 end
72 end
73 end
73 end
74
74
75 def authenticated?(password)
75 def authenticated?(password)
76 if self.activated
76 if self.activated
77 hashed_password == User.encrypt(password,self.salt)
77 hashed_password == User.encrypt(password,self.salt)
78 else
78 else
79 false
79 false
80 end
80 end
81 end
81 end
82
82
83 def admin?
83 def admin?
84 - self.roles.where(name: 'admin').count > 0
84 + has_role?('admin')
85 + end
86 +
87 + def has_role?(role)
88 + self.roles.where(name: role).count > 0
85 end
89 end
86
90
87 def email_for_editing
91 def email_for_editing
88 if self.email==nil
92 if self.email==nil
89 "(unknown)"
93 "(unknown)"
90 elsif self.email==''
94 elsif self.email==''
91 "(blank)"
95 "(blank)"
92 else
96 else
93 self.email
97 self.email
94 end
98 end
95 end
99 end
96
100
@@ -1,25 +1,54
1 - %h1 Administrators
1 + %h1 Modify Role
2 + .row
3 + .col-md-6
4 + %h4 Administrators
5 + = form_tag modify_role_user_admin_index_path, method: 'post', class: 'form-inline' do
6 + = hidden_field_tag :role, 'admin'
7 + .form-group
8 + = label_tag :login, 'Grant admin role to:'
9 + = text_field_tag 'login',nil, class: 'form-control'
10 + .form-group
11 + = submit_tag 'Grant', class: 'btn btn-primary'
12 + %br
13 + %table.table.table-condense.table-hover.table-striped.table-bordered
14 + %thead{:class => 'info-head'}
15 + %th #
16 + %th Login
17 + %th Full name
18 + %th
19 + - @admins.each_with_index do |user, i|
20 + %tr
21 + %td= i+1
22 + %td= user.login
23 + %td= user.full_name
24 + %td
25 + - if user.login!='root'
26 + = link_to '[revoke]', modify_role_user_admin_index_path( login: user.login, role: 'admin', commit: 'revoke')
27 + .col-md-6
28 + %h4 Teacher Assistants (TA)
29 + = form_tag modify_role_user_admin_index_path, method: 'post', class: 'form-inline' do
30 + = hidden_field_tag :role, 'TA'
31 + .form-group
32 + = label_tag :login, 'Grant TA role to:'
33 + = text_field_tag 'login',nil, class: 'form-control'
34 + .form-group
35 + = submit_tag 'Grant', class: 'btn btn-primary'
36 + %br
37 + %table.table.table-condense.table-hover.table-striped.table-bordered
38 + %thead{:class => 'info-head'}
39 + %th #
40 + %th Login
41 + %th Full name
42 + %th
43 + - @tas.each_with_index do |user, i|
44 + %tr
45 + %td= i+1
46 + %td= user.login
47 + %td= user.full_name
48 + %td
49 + - if user.login!='root'
50 + = link_to '[revoke]', modify_role_user_admin_index_path( login: user.login, role: 'TA', commit: 'revoke')
2
51
3 - %table{:class => 'info'}
4 - %tr{:class => 'info-head'}
5 - %th #
6 - %th Login
7 - %th Full name
8 - %th
9 - - @admins.each_with_index do |user, i|
10 - %tr
11 - %td= i+1
12 - %td= user.login
13 - %td= user.full_name
14 - %td
15 - - if user.login!='root'
16 - = link_to '[revoke]', :action => 'revoke_admin', :id => user.id
17 - %hr
18 -
19 - = form_tag :action => 'grant_admin' do
20 - = label_tag :login, 'Grant admin permission to:'
21 - = text_field_tag 'login',nil, class: 'input-field'
22 - = submit_tag 'Grant', class: 'btn btn-primary'
23
52
24 %hr/
53 %hr/
25 = link_to '[go back to index]', :action => 'index'
54 = link_to '[go back to index]', :action => 'index'
@@ -104,26 +104,25
104
104
105 #user admin
105 #user admin
106 resources :user_admin do
106 resources :user_admin do
107 collection do
107 collection do
108 match 'bulk_manage', via: [:get, :post]
108 match 'bulk_manage', via: [:get, :post]
109 get 'bulk_mail'
109 get 'bulk_mail'
110 get 'user_stat'
110 get 'user_stat'
111 get 'import'
111 get 'import'
112 get 'new_list'
112 get 'new_list'
113 get 'admin'
113 get 'admin'
114 get 'active'
114 get 'active'
115 get 'mass_mailing'
115 get 'mass_mailing'
116 - get 'revoke_admin'
116 + match 'modify_role', via: [:get, :post]
117 - post 'grant_admin'
118 match 'create_from_list', via: [:get, :post]
117 match 'create_from_list', via: [:get, :post]
119 match 'random_all_passwords', via: [:get, :post]
118 match 'random_all_passwords', via: [:get, :post]
120 end
119 end
121 member do
120 member do
122 get 'clear_last_ip'
121 get 'clear_last_ip'
123 end
122 end
124 end
123 end
125
124
126 resources :contest_management, only: [:index] do
125 resources :contest_management, only: [:index] do
127 collection do
126 collection do
128 get 'user_stat'
127 get 'user_stat'
129 get 'clear_stat'
128 get 'clear_stat'
@@ -216,24 +216,25
216 desc = conf[:description]
216 desc = conf[:description]
217 else
217 else
218 desc = ''
218 desc = ''
219 end
219 end
220 create_configuration_key(conf[:key],
220 create_configuration_key(conf[:key],
221 conf[:value_type],
221 conf[:value_type],
222 conf[:default_value],
222 conf[:default_value],
223 desc)
223 desc)
224 end
224 end
225 end
225 end
226
226
227 def seed_roles
227 def seed_roles
228 + Role.find_or_create_by(name: 'TA')
228 return if Role.find_by_name('admin')
229 return if Role.find_by_name('admin')
229
230
230 role = Role.create(:name => 'admin')
231 role = Role.create(:name => 'admin')
231 user_admin_right = Right.create(:name => 'user_admin',
232 user_admin_right = Right.create(:name => 'user_admin',
232 :controller => 'user_admin',
233 :controller => 'user_admin',
233 :action => 'all')
234 :action => 'all')
234 problem_admin_right = Right.create(:name=> 'problem_admin',
235 problem_admin_right = Right.create(:name=> 'problem_admin',
235 :controller => 'problems',
236 :controller => 'problems',
236 :action => 'all')
237 :action => 'all')
237
238
238 graders_right = Right.create(:name => 'graders_admin',
239 graders_right = Right.create(:name => 'graders_admin',
239 :controller => 'graders',
240 :controller => 'graders',
You need to be logged in to leave comments. Login now