diff --git a/app/controllers/user_admin_controller.rb b/app/controllers/user_admin_controller.rb --- a/app/controllers/user_admin_controller.rb +++ b/app/controllers/user_admin_controller.rb @@ -151,6 +151,41 @@ end end + # admin management + + def admin + @admins = User.find(:all).find_all {|user| user.admin? } + end + + def grant_admin + login = params[:login] + user = User.find_by_login(login) + if user!=nil + admin_role = Role.find_by_name('admin') + user.roles << admin_role + else + flash[:notice] = 'Unknown user' + end + flash[:notice] = 'User added as admins' + redirect_to :action => 'admin' + end + + def revoke_admin + user = User.find(params[:id]) + if user==nil + flash[:notice] = 'Unknown user' + redirect_to :action => 'admin' and return + elsif user.login == 'root' + flash[:notice] = 'You cannot revoke admisnistrator permission from root.' + redirect_to :action => 'admin' and return + end + + admin_role = Role.find_by_name('admin') + user.roles.delete(admin_role) + flash[:notice] = 'User permission revoked' + redirect_to :action => 'admin' + end + protected def random_password(length=5) diff --git a/app/views/user_admin/admin.html.haml b/app/views/user_admin/admin.html.haml new file mode 100644 --- /dev/null +++ b/app/views/user_admin/admin.html.haml @@ -0,0 +1,25 @@ +%h1 Administrators + +%table + %tr + %th # + %th Login + %th Full name + %th + - @admins.each_with_index do |user, i| + %tr + %td= i+1 + %td= user.login + %td= user.full_name + %td + - if user.login!='root' + = link_to '[revoke]', :action => 'revoke_admin', :id => user.id +%hr + +- form_tag :action => 'grant_admin' do + Grant admin permission to: + = text_field_tag 'login' + = submit_tag 'Grant' + +%hr/ += link_to '[go back to index]', :action => 'index' diff --git a/app/views/user_admin/list.rhtml b/app/views/user_admin/list.rhtml --- a/app/views/user_admin/list.rhtml +++ b/app/views/user_admin/list.rhtml @@ -29,6 +29,7 @@ What else: <%= link_to '[New user]', :action => 'new' %> <%= link_to '[New list of users]', :action => 'new_list' %> +<%= link_to '[View administrators]', :action => 'admin' %> <%= link_to '[Random passwords]', :action => 'random_all_passwords' %> <%= link_to '[View active users]', :action => 'active' %>