feat(db): permission_grants, permissions and commands given to one account or character

A new table, permission_grants (MySQL migration 96, SQLite 79), and the IPermissionGrants interface with MySQL, SQLite
and TestSQL implementations. A row grants (or with deny, takes away) a dashboard permission, a slash command, a
permission category or every command up to a GM level, for one account or one character, with an optional expiry, who
granted it and when, and a note. Rows are never deleted: removing one sets revoked_at/revoked_by, so the table is also
the history. Nothing reads it yet.

Check: both migrations run on a fresh and an existing database; DatabaseParityTests PermissionGrants passes against
MariaDB (DLU_TEST_MYSQL_HOST) and SQLite gives the same results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-29 00:53:19 -05:00
parent dc1c5fb36b
commit c575eba4e7
12 changed files with 262 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ set(DDATABASES_DATABASES_MYSQL_TABLES_SOURCES
"AccountNotes.cpp"
"AccountStrikes.cpp"
"ApiKeys.cpp"
"PermissionGrants.cpp"
"Moderation.cpp"
"ServerHealth.cpp"
"PlayerPositions.cpp"