Implandação da customização das permissões dos usuarios e das notificaçoes
This commit is contained in:
74
app/controllers/admin/variaveis_personalizadas_controller.rb
Normal file
74
app/controllers/admin/variaveis_personalizadas_controller.rb
Normal file
@@ -0,0 +1,74 @@
|
||||
# app/controllers/admin/variaveis_personalizadas_controller.rb
|
||||
#
|
||||
# CRUD das {{variaveis}} que o ADM cria. Uma vez cadastradas, aparecem no editor
|
||||
# de mensagem ao lado das variáveis do sistema e valem para qualquer evento.
|
||||
module Admin
|
||||
class VariaveisPersonalizadasController < ApplicationController
|
||||
include Auditavel
|
||||
|
||||
before_action :set_variavel, only: %i[edit update destroy]
|
||||
|
||||
def index
|
||||
authorize VariavelPersonalizada
|
||||
@variaveis = policy_scope(VariavelPersonalizada).ordenadas
|
||||
# Mostrar o catálogo do sistema junto evita o erro mais comum: cadastrar
|
||||
# {{data}} sem saber que já existe (o model recusa, mas melhor avisar antes).
|
||||
@do_sistema = Notificacao::CatalogoVariaveis.por_origem.except(:personalizada)
|
||||
end
|
||||
|
||||
def new
|
||||
@variavel = VariavelPersonalizada.new(ativo: true)
|
||||
authorize @variavel
|
||||
end
|
||||
|
||||
def create
|
||||
@variavel = VariavelPersonalizada.new(variavel_params)
|
||||
authorize @variavel
|
||||
|
||||
if @variavel.save
|
||||
auditar!(:criar, @variavel, dados_novos: { chave: @variavel.chave, valor: @variavel.valor })
|
||||
redirect_to admin_variaveis_path, notice: "Variável #{@variavel.marcador} criada."
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def edit; end
|
||||
|
||||
def update
|
||||
anterior = @variavel.valor
|
||||
|
||||
if @variavel.update(variavel_params)
|
||||
auditar!(:editar, @variavel,
|
||||
dados_anteriores: { valor: anterior },
|
||||
dados_novos: { valor: @variavel.valor })
|
||||
redirect_to admin_variaveis_path, notice: "Variável #{@variavel.marcador} atualizada."
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
marcador = @variavel.marcador
|
||||
@variavel.destroy
|
||||
auditar!(:excluir, @variavel, dados_anteriores: { chave: @variavel.chave })
|
||||
|
||||
# A variável some, mas o texto que a usava continua lá: sem valor, o
|
||||
# renderizador troca por vazio. Avisar é melhor do que a mensagem sair com
|
||||
# um buraco que ninguém relaciona a esta exclusão.
|
||||
redirect_to admin_variaveis_path,
|
||||
alert: "Variável #{marcador} excluída. Mensagens que a usavam passam a mostrar espaço em branco no lugar."
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_variavel
|
||||
@variavel = VariavelPersonalizada.find(params[:id])
|
||||
authorize @variavel
|
||||
end
|
||||
|
||||
def variavel_params
|
||||
params.require(:variavel_personalizada).permit(:chave, :valor, :descricao, :ativo)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user