Correções de integração Fases 2/3 ↔ 4-8 + Auditoria UI + README final
This commit is contained in:
84
app/controllers/admin/usuarios_controller.rb
Normal file
84
app/controllers/admin/usuarios_controller.rb
Normal file
@@ -0,0 +1,84 @@
|
||||
# app/controllers/usuarios_controller.rb
|
||||
class Admin::UsuariosController < ApplicationController
|
||||
before_action :set_usuario, only: [:show, :edit, :update, :destroy, :toggle_ativo]
|
||||
|
||||
def index
|
||||
authorize User
|
||||
@usuarios = policy_scope(User).order(:nome).page(params[:page]).per(20)
|
||||
@roles = User.roles.keys
|
||||
end
|
||||
|
||||
def show
|
||||
authorize @usuario
|
||||
end
|
||||
|
||||
def new
|
||||
@usuario = User.new
|
||||
authorize @usuario
|
||||
end
|
||||
|
||||
def create
|
||||
@usuario = User.new(usuario_params)
|
||||
authorize @usuario
|
||||
|
||||
if @usuario.save
|
||||
AuditoriaLog.registrar(user: current_user, acao: 'criar_usuario', entidade: 'User', dados_novos: { detalhes: "Criou usuário #{@usuario.email} (#{@usuario.role})" }, request: request)
|
||||
redirect_to admin_usuarios_path, notice: 'Usuário criado com sucesso.'
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
authorize @usuario
|
||||
end
|
||||
|
||||
def update
|
||||
authorize @usuario
|
||||
|
||||
if @usuario.update(usuario_params_update)
|
||||
AuditoriaLog.registrar(user: current_user, acao: 'editar_usuario', entidade: 'User', dados_novos: { detalhes: "Editou usuário #{@usuario.email}" }, request: request)
|
||||
redirect_to admin_usuarios_path, notice: 'Usuário atualizado.'
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
authorize @usuario
|
||||
|
||||
if @usuario == current_user
|
||||
redirect_to admin_usuarios_path, alert: 'Você não pode excluir sua própria conta.'
|
||||
return
|
||||
end
|
||||
|
||||
@usuario.destroy
|
||||
AuditoriaLog.registrar(user: current_user, acao: 'excluir_usuario', entidade: 'User', dados_novos: { detalhes: "Excluiu usuário #{@usuario.email}" }, request: request)
|
||||
redirect_to admin_usuarios_path, notice: 'Usuário removido.'
|
||||
end
|
||||
|
||||
def toggle_ativo
|
||||
authorize @usuario, :update?
|
||||
@usuario.update!(ativo: !@usuario.ativo)
|
||||
status = @usuario.ativo? ? 'ativado' : 'desativado'
|
||||
AuditoriaLog.registrar(user: current_user, acao: "usuario_#{status}", entidade: \'User\', dados_novos: { detalhes: "#{@usuario.email} foi #{status}" }, request: request)
|
||||
redirect_to admin_usuarios_path, notice: "Usuário #{status} com sucesso."
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_usuario
|
||||
@usuario = User.find(params[:id])
|
||||
end
|
||||
|
||||
def usuario_params
|
||||
params.require(:user).permit(:nome, :email, :password, :password_confirmation,
|
||||
:role, :pin_code, :ativo)
|
||||
end
|
||||
|
||||
def usuario_params_update
|
||||
permitted = [:nome, :email, :role, :pin_code, :ativo]
|
||||
permitted += [:password, :password_confirmation] if params[:user][:password].present?
|
||||
params.require(:user).permit(permitted)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user