55 lines
1.9 KiB
Transact-SQL
55 lines
1.9 KiB
Transact-SQL
-- V020__add_chargeable_chars_permission.sql
|
|
-- PRC-001: permiso RBAC para ABM de caracteres tasables.
|
|
--
|
|
-- Cambios:
|
|
-- 1. Agrega permiso 'tasacion:caracteres_especiales:gestionar' al catálogo.
|
|
-- 2. Asigna el permiso al rol 'admin'.
|
|
--
|
|
-- Convención RBAC: modulo:recurso:accion.
|
|
-- Patrón: V007 (MERGE idempotente).
|
|
-- Idempotente: seguro para re-ejecutar.
|
|
-- Reversa: V020_ROLLBACK.sql.
|
|
-- Run on: SIGCM2 (dev), SIGCM2_Test_App, SIGCM2_Test_Api.
|
|
--
|
|
-- NOTA: V020 se ejecuta ANTES de V021 (tabla) porque el permiso debe existir
|
|
-- antes de que la API arranque con [RequirePermission(...)].
|
|
-- V021 crea la tabla dbo.ChargeableCharConfig.
|
|
-- V022 siembra las 4 filas globales por defecto.
|
|
--
|
|
-- SDD Design: engram sdd/prc-001-word-counter-spike/design (D16/D17)
|
|
|
|
SET QUOTED_IDENTIFIER ON;
|
|
SET ANSI_NULLS ON;
|
|
SET NOCOUNT ON;
|
|
GO
|
|
|
|
-- Agregar permiso al catálogo (idempotente via MERGE).
|
|
MERGE dbo.Permiso AS t
|
|
USING (VALUES
|
|
('tasacion:caracteres_especiales:gestionar',
|
|
N'Gestionar caracteres tasables',
|
|
N'Crear, editar precio y desactivar la configuración de caracteres especiales para tasación.',
|
|
'tasacion')
|
|
) AS s (Codigo, Nombre, Descripcion, Modulo)
|
|
ON t.Codigo = s.Codigo
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT (Codigo, Nombre, Descripcion, Modulo)
|
|
VALUES (s.Codigo, s.Nombre, s.Descripcion, s.Modulo);
|
|
GO
|
|
|
|
-- Asignar a rol 'admin' (idempotente via MERGE).
|
|
MERGE dbo.RolPermiso AS t
|
|
USING (
|
|
SELECT r.Id AS RolId, p.Id AS PermisoId
|
|
FROM dbo.Rol r
|
|
CROSS JOIN dbo.Permiso p
|
|
WHERE r.Codigo = 'admin'
|
|
AND p.Codigo = 'tasacion:caracteres_especiales:gestionar'
|
|
) AS s ON t.RolId = s.RolId AND t.PermisoId = s.PermisoId
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT (RolId, PermisoId) VALUES (s.RolId, s.PermisoId);
|
|
GO
|
|
|
|
PRINT 'V020 applied — tasacion:caracteres_especiales:gestionar added to catalog and assigned to admin.';
|
|
GO
|