feat(permissions): C-3 — пер-ролевые права кастомных ролей (резолвер + конфиг)
Миграция 056: снят CHECK с role_permissions.role (пересборка) → можно хранить набор прав произвольной кастомной роли. isEnabled(uid,permRole,baseRole,key): user override → role_permissions[customRole] → фолбэк role_permissions[base] → дефолт реестра(base). requirePermission передаёт permRole=customRole||role. getMyPermissions/getUserPermissions: roleMap = база + наложение кастомной роли. Тест C-3: права кастомной роли перекрывают базу, фолбэк на базу. custom-roles 8/8, permissions 17/17, backend без регрессий. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
-- 056_role_permissions_any_role.sql
|
||||
-- Phase C, Stage C-3 — пер-ролевые права для КАСТОМНЫХ ролей.
|
||||
-- Снимаем CHECK role IN ('teacher','student','free_student') с role_permissions,
|
||||
-- чтобы хранить набор прав для произвольной кастомной роли (ключ role = имя роли).
|
||||
-- SQLite не ALTER-ит CHECK → пересобираем таблицу (она мала, без входящих FK).
|
||||
|
||||
CREATE TABLE role_permissions_new (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
role TEXT NOT NULL,
|
||||
permission TEXT NOT NULL,
|
||||
enabled INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE (role, permission)
|
||||
);
|
||||
|
||||
INSERT INTO role_permissions_new (id, role, permission, enabled)
|
||||
SELECT id, role, permission, enabled FROM role_permissions;
|
||||
|
||||
DROP TABLE role_permissions;
|
||||
ALTER TABLE role_permissions_new RENAME TO role_permissions;
|
||||
Reference in New Issue
Block a user