a250d15f9a
Миграция 053: user_permissions.expires_at (NULL = бессрочно). Резолвер isEnabled
+ /me + /users/:id игнорируют просроченные оверрайды (наследуют роль); seedDefaults
чистит просроченные строки. setUserPermission принимает days → выдаёт право на
срок (datetime('now','+N days')). API отдаёт expiresAt. Клиент: setUserPermission(...,days).
В модалке прав пользователя — бейдж «до ДАТА» + кнопка «врем.» (выдать на N дней).
Тест: срок хранится/отдаётся, просроченное игнорируется и вычищается. Backend pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7 lines
491 B
SQL
7 lines
491 B
SQL
-- 053_user_permission_expiry.sql
|
|
-- Временные права (B8): личный оверрайд может иметь срок действия. По истечении
|
|
-- срока он перестаёт учитываться (резолвер фильтрует по expires_at) и периодически
|
|
-- удаляется. NULL = бессрочно (как и было). Время в UTC ('YYYY-MM-DD HH:MM:SS').
|
|
|
|
ALTER TABLE user_permissions ADD COLUMN expires_at TEXT;
|