Correção de horario e implantação da geração de Romaneio
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# Leva a chave nova `admin.romaneio` para os perfis de sistema JÁ SALVOS.
|
||||
#
|
||||
# Por que existe (mesma armadilha de 20260826000005): 20260826000003 é idempotente,
|
||||
# então uma permissão acrescentada ao catálogo DEPOIS daquele deploy nunca chega às
|
||||
# linhas de perfis_acesso. O sintoma é mudo — o item some do menu e a URL responde
|
||||
# "sem permissão" sem nada explicando o porquê.
|
||||
#
|
||||
# Diferença deliberada para 20260826000005: aqui é ADITIVO (`permissoes || '[...]'`)
|
||||
# em vez de reescrever a lista inteira. Reescrever é aceitável para o Administrador
|
||||
# ("acesso total" por definição); para o Gerente desfaria qualquer ajuste que o ADM
|
||||
# tenha feito na tela de Perfis.
|
||||
#
|
||||
# Gerente entra porque `admin.romaneio` é a mesma classe de ferramenta operacional
|
||||
# que `admin.planilha_simpli_route`, que ele já tem. Operador NÃO entra por padrão —
|
||||
# quem carrega o caminhão recebe a chave pela tela de Perfis, que existe para isso.
|
||||
class AddPermissaoRomaneioAosPerfis < ActiveRecord::Migration[7.1]
|
||||
CHAVE = 'admin.romaneio'.freeze
|
||||
|
||||
def up
|
||||
return unless table_exists?(:perfis_acesso)
|
||||
|
||||
execute(<<~SQL.squish)
|
||||
UPDATE perfis_acesso
|
||||
SET permissoes = permissoes || #{quote([CHAVE].to_json)}::jsonb,
|
||||
updated_at = NOW()
|
||||
WHERE sistema = true
|
||||
AND LOWER(nome) IN ('administrador', 'gerente')
|
||||
AND NOT (permissoes ? #{quote(CHAVE)})
|
||||
SQL
|
||||
end
|
||||
|
||||
# Reversível: tirar a chave devolve os perfis ao estado anterior sem tocar em
|
||||
# mais nada (o `-` de jsonb remove o elemento do array, se estiver lá).
|
||||
def down
|
||||
return unless table_exists?(:perfis_acesso)
|
||||
|
||||
execute(<<~SQL.squish)
|
||||
UPDATE perfis_acesso
|
||||
SET permissoes = permissoes - #{quote(CHAVE)}, updated_at = NOW()
|
||||
WHERE permissoes ? #{quote(CHAVE)}
|
||||
SQL
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user