From 935546637dca9b35a21a2ef85d5071154321c2e0 Mon Sep 17 00:00:00 2001 From: Alexandre Arias <apa13@inf.ufpr.br> Date: Tue, 27 Oct 2015 12:16:06 -0200 Subject: [PATCH] implement users managemet correctly Signed-off-by: Alexandre Arias <apa13@inf.ufpr.br> --- .../management/users_controller.rb | 13 ++-- app/views/management/users/_checkbox.html.erb | 5 +- app/views/management/users/admins.html.erb | 68 +++++++++++-------- app/views/management/users/curators.html.erb | 64 +++++++++-------- app/views/management/users/index.html.erb | 13 ++-- .../shared/management/_nav_menu.html.erb | 4 +- config/routes.rb | 4 ++ 7 files changed, 100 insertions(+), 71 deletions(-) diff --git a/app/controllers/management/users_controller.rb b/app/controllers/management/users_controller.rb index f234044d..f8b9770f 100644 --- a/app/controllers/management/users_controller.rb +++ b/app/controllers/management/users_controller.rb @@ -1,9 +1,9 @@ class Management::UsersController < ManagementController - before_action :set_user, only: [:show, :edit, :update, :destroy] + before_action :set_user, only: [:show, :edit, :update, :destroy, :change_roles] before_action :set_roles, only: [:new, :edit] def index - @users = user_repository.all + @users = User.all end @@ -25,9 +25,9 @@ class Management::UsersController < ManagementController # POST /users # POST /users.json def create + @user = User.new(user_params) @user.roles.ids = Role.all.ids - respond_to do |format| if user_repository.save @user @@ -62,8 +62,11 @@ class Management::UsersController < ManagementController end def change_roles - @user = User.find_by(id: params[:user.id]) - @user.roles = params[:role_ids] + @user.roles = [] + @user.roles << Role.find_by_id(params[:role_id]) + respond_to do |format| + format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"} + end end private diff --git a/app/views/management/users/_checkbox.html.erb b/app/views/management/users/_checkbox.html.erb index 29222617..53eecd0e 100644 --- a/app/views/management/users/_checkbox.html.erb +++ b/app/views/management/users/_checkbox.html.erb @@ -16,6 +16,9 @@ <div align="center" class="ls-btn-primary"> <%= f.submit "Salvar" %> <%= link_to "Fechar", class:"btn-success" %> - </div> + + + +</div> <%end%> diff --git a/app/views/management/users/admins.html.erb b/app/views/management/users/admins.html.erb index 2fd58c0a..9bcef566 100644 --- a/app/views/management/users/admins.html.erb +++ b/app/views/management/users/admins.html.erb @@ -1,8 +1,18 @@ -<h1 class="ls-title-intro ls-ico-users">Adminstradores</h1> +<h1 class="ls-title-intro ls-ico-users">Administradores</h1> <a href="#" class="ls-btn-primary" aria-expanded="false" role="combobox">Cadastrar novo</a> + +<% admins = Array.new %> +<% @users = User.all%> +<% @users.all.each do |user|%> + <% admins << user if user.roles[0].name == "admin" %> +<% end %> +<% if admins[0].nil? %> + <BR><BR><h3>Não há adminstradores cadastrados</h3> +<% else %> + <div class="ls-box-filter"> <form action="" class="ls-form ls-form-inline ls-float-left"> <label class="ls-label col-md-6 col-sm-8"> @@ -21,7 +31,7 @@ <form action="" class="ls-form ls-form-inline ls-float-right"> <label class="ls-label" role="search"> <b class="ls-label-text ls-hidden-accessible">Nome do Administrador</b> - <input type="text" id="q" name="q" aria-label="Faça sua busca por admnistrador" placeholder="Nome do administrador" required="" class="ls-field-sm"> + <input type="text" id="q" name="q" aria-label="Faça sua busca por administrador" placeholder="Nome do adminstrador" required="" class="ls-field-sm"> </label> <div class="ls-actions-btn"> @@ -41,34 +51,31 @@ </thead> <tbody> - <% @admins = @users.all.find_by(role: "admin") %> - <% @admins.each do |a| %> - <tr> - <td> - <a href="#"><%= a.name %></a> - - <% a.each do |r| %> - <span class="ls-tag hidden-xs"><%= a.name %></span> - <% end %> - </td> - <td class="ls-txt-center hidden-xs">Ativo - <small class="ls-display-block">último acesso <%= a.last_sign_in_at %></small> - </td> - <td class="ls-txt-center"> - <%= a.email %> - </td> - <td class="ls-txt-right ls-regroup"> - <%= link_to 'Administrar', edit_management_user_path(a), {class: 'ls-btn ls-btn-sm', aria: {expanded: false}, role: 'combobox'} %> - <%= link_to 'Excluir', management_user_path(a), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-color-danger', role: 'option'} %> - <div data-ls-module="dropdown" class="ls-dropdown ls-pos-right"> - <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox"></a> - <ul class="ls-dropdown-nav" aria-hidden="true"> - <%= render 'checkbox'%> - </ul> - </div> - - </td> - </tr> + <% admins.each do |c| %> + <tr> + <td> + <a href="#"><%= c.name %></a> + <span class="ls-tag hidden-xs"><%= c.roles[0].name %></span> + </td> + <td class="ls-txt-center hidden-xs">Ativo + <small class="ls-display-block">último acesso <%= c.last_sign_in_at %></small> + </td> + <td class="ls-txt-center"> + <%= c.email %> + </td> + <td class="ls-txt-right ls-regroup"> + <%= link_to 'Administrar', edit_management_user_path(c), {class: 'ls-btn ls-btn-sm', aria: {expanded: false}, role: 'combobox'} %> + <%= link_to 'Excluir', management_user_path(c), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-btn ls-btn-sm', role: 'option'} %> + <div data-ls-module="dropdown" class="ls-dropdown ls-pos-right"> + <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox">NÃvel</a> + <ul class="ls-dropdown-nav" aria-hidden="true"> + <% Role.all.each do |r| %> + <li><%= link_to "Definir como #{r.name}", change_roles_management_user_path( :id => c.id, :role_id => r.id),:method => :post %></li> + <% end %> + </ul> + </div> + </td> + </tr> <% end %> </tbody> @@ -100,3 +107,4 @@ </label> </div> </div> +<% end %> diff --git a/app/views/management/users/curators.html.erb b/app/views/management/users/curators.html.erb index 06a52748..7e8f6f08 100644 --- a/app/views/management/users/curators.html.erb +++ b/app/views/management/users/curators.html.erb @@ -3,6 +3,16 @@ <a href="#" class="ls-btn-primary" aria-expanded="false" role="combobox">Cadastrar novo</a> + +<% curators = Array.new %> +<% @users = User.all%> +<% @users.all.each do |user|%> + <% curators << user if user.roles[0].name == "curator" %> +<% end %> +<% if curators[0].nil? %> + <BR><BR><h3>Não há curadores cadastrados</h3> +<% else %> + <div class="ls-box-filter"> <form action="" class="ls-form ls-form-inline ls-float-left"> <label class="ls-label col-md-6 col-sm-8"> @@ -41,34 +51,31 @@ </thead> <tbody> - <% @curators = @users.all.find_by(role: "curator") %> - <% @curators.each do |c| %> - <tr> - <td> - <a href="#"><%= c.name %></a> - - <% c.each do |r| %> - <span class="ls-tag hidden-xs"><%= c.name %></span> - <% end %> - </td> - <td class="ls-txt-center hidden-xs">Ativo - <small class="ls-display-block">último acesso <%= c.last_sign_in_at %></small> - </td> - <td class="ls-txt-center"> - <%= c.email %> - </td> - <td class="ls-txt-right ls-regroup"> - <%= link_to 'Administrar', edit_management_user_path(c), {class: 'ls-btn ls-btn-sm', aria: {expanded: false}, role: 'combobox'} %> - <%= link_to 'Excluir', management_user_path(c), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-color-danger', role: 'option'} %> - <div data-ls-module="dropdown" class="ls-dropdown ls-pos-right"> - <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox"></a> - <ul class="ls-dropdown-nav" aria-hidden="true"> - <%= render 'checkbox'%> - </ul> - </div> - - </td> - </tr> + <% curators.each do |c| %> + <tr> + <td> + <a href="#"><%= c.name %></a> + <span class="ls-tag hidden-xs"><%= c.roles[0].name %></span> + </td> + <td class="ls-txt-center hidden-xs">Ativo + <small class="ls-display-block">último acesso <%= c.last_sign_in_at %></small> + </td> + <td class="ls-txt-center"> + <%= c.email %> + </td> + <td class="ls-txt-right ls-regroup"> + <%= link_to 'Administrar', edit_management_user_path(c), {class: 'ls-btn ls-btn-sm', aria: {expanded: false}, role: 'combobox'} %> + <%= link_to 'Excluir', management_user_path(c), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-btn ls-btn-sm', role: 'option'} %> + <div data-ls-module="dropdown" class="ls-dropdown ls-pos-right"> + <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox">NÃvel</a> + <ul class="ls-dropdown-nav" aria-hidden="true"> + <% Role.all.each do |r| %> + <li><%= link_to "Definir como #{r.name}", change_roles_management_user_path( :id => c.id, :role_id => r.id),:method => :post %></li> + <% end %> + </ul> + </div> + </td> + </tr> <% end %> </tbody> @@ -100,3 +107,4 @@ </label> </div> </div> +<% end %> diff --git a/app/views/management/users/index.html.erb b/app/views/management/users/index.html.erb index 39471d93..9cdbe55d 100644 --- a/app/views/management/users/index.html.erb +++ b/app/views/management/users/index.html.erb @@ -47,7 +47,7 @@ <a href="#"><%= u.name %></a> <% u.roles.each do |r| %> - <span class="ls-tag hidden-xs"><%= u.name %></span> + <span class="ls-tag hidden-xs"><%= r.name %></span> <% end %> </td> <td class="ls-txt-center hidden-xs">Ativo @@ -57,13 +57,16 @@ <%= u.email %> </td> <td class="ls-txt-right ls-regroup"> + <%= link_to 'Administrar', edit_management_user_path(u), {class: 'ls-btn ls-btn-sm', aria: {expanded: false}, role: 'combobox'} %> - <%= link_to 'Excluir', management_user_path(u), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-color-danger', role: 'option'} %> + <%= link_to 'Excluir', management_user_path(u), {method: :delete, data: {confirm: 'Tem certeza que deseja excluir?'}, title: 'Apagar usuário', class: 'ls-btn ls-btn-sm', role: 'option'} %> <div data-ls-module="dropdown" class="ls-dropdown ls-pos-right"> - <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox"></a> - <ul class="ls-dropdown-nav" aria-hidden="true"> + <a href="#" class="ls-btn ls-btn-sm" aria-expanded="false" role="combobox">NÃvel</a> + <ul class="ls-dropdown-nav"> <% @user = u %> - <%= render 'checkbox'%> + <% Role.all.each do |r| %> + <li><%= link_to "Definir como #{r.name}", change_roles_management_user_path( :id => u, :role_id => r.id),:method => :post %></li> + <% end %> </ul> </div> diff --git a/app/views/shared/management/_nav_menu.html.erb b/app/views/shared/management/_nav_menu.html.erb index d0d4771c..d94f2bdf 100644 --- a/app/views/shared/management/_nav_menu.html.erb +++ b/app/views/shared/management/_nav_menu.html.erb @@ -18,8 +18,8 @@ <a href="#" class="ls-ico-stats">Usuários e permissões</a> <ul role="menu"> <li><%= link_to "Usuários", management_users_path, class: 'ls-submenu-item' %></li> - <li><%= link_to "Curadores", '#', class: 'ls-submenu-item' %></li> - <li><%= link_to "Administradores", '#', class: 'ls-submenu-item' %></li> + <li><%= link_to "Curadores", curators_management_users_path, class: 'ls-submenu-item' %></li> + <li><%= link_to "Administradores", admins_management_users_path, class: 'ls-submenu-item' %></li> </ul> </li> <li><%= link_to "Denúncias", '#', class: 'ls-ico-bullhorn' %> diff --git a/config/routes.rb b/config/routes.rb index 5292a637..b7c5abc6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -23,6 +23,10 @@ Rails.application.routes.draw do resource :admin, only: [:create, :destroy] resource :curator, only: [:create, :destroy] + member do + post :change_roles + end + collection do get :curators get :admins -- GitLab