Implandação da customização das permissões dos usuarios e das notificaçoes
This commit is contained in:
31
db/migrate/20260826000001_create_perfis_acesso.rb
Normal file
31
db/migrate/20260826000001_create_perfis_acesso.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
# Perfil de acesso: o conjunto de permissões que o ADM monta na tela e atribui a
|
||||
# um usuário.
|
||||
#
|
||||
# Antes, quem-vê-o-quê era o papel fixo em `users.role` e um punhado de `if
|
||||
# admin? || gerente?` espalhado pelas policies: tirar as Configurações de UM
|
||||
# gerente exigia editar código e fazer deploy.
|
||||
#
|
||||
# `permissoes` é jsonb (lista de chaves de Permissao::TODAS) e não tabela filha
|
||||
# de propósito: é um conjunto pequeno, sempre lido junto com o perfil, e nunca
|
||||
# consultado ao contrário ("quem tem tal permissão?" se responde em memória). A
|
||||
# validação de quais chaves existem fica no model — o catálogo é código, muda com
|
||||
# deploy, e o banco não pode travar um perfil salvo com uma chave que saiu.
|
||||
class CreatePerfisAcesso < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :perfis_acesso do |t|
|
||||
t.string :nome, null: false
|
||||
t.string :descricao
|
||||
t.jsonb :permissoes, null: false, default: []
|
||||
# sistema: nasce com o app (Administrador, Gerente, ...). Editável e
|
||||
# desativável, mas não apagável — mesma regra de EventoNotificacao#apagavel?
|
||||
t.boolean :sistema, null: false, default: false
|
||||
t.boolean :ativo, null: false, default: true
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
# Nome é o que identifica o perfil na tela; duplicar só gera erro humano.
|
||||
add_index :perfis_acesso, 'LOWER(nome)', unique: true,
|
||||
name: 'index_perfis_acesso_nome_unico'
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user