Агуулгыг алгасах

Админ, RBAC, аудит

Платформын удирдлагын гадаргуу нь дөрвөн үүрэг, динамик эрхийн каталог, болон hash-chain аудит дээр тогтоно.

Дөрвөн үүрэг

superadmin  →  admin  →  manager  →  user
Үүрэг Юуг хариуцах
superadmin Админ хэрэглэгчдийг томилох/хасах, урилга, платформын хандалтын горим. Цорын ганц энэ үүргийг гүйцэтгэнэ.
admin Систем удирдах — каталогийн бүх эрхэд авто-resolve хийнэ
manager Иргэний хүсэлт хянаж шийдвэрлэх (gov.review)
user Өөрийн хэсэг (personal.view)

RBAC — динамик эрх

Үүрэг ба эрх нь DB-д хадгалагдаж, ажиллаж байх үед өөрчлөгдөнө. Эрхийн бүтэн каталогийг Чадварын зураглал-аас үзнэ үү.

Метод Зам Эрх
GET /api/v1/rbac/me нэвтэрсэн — өөрийн эрхүүд
GET /api/v1/rbac/roles · /permissions roles.manage
POST PUT DELETE /api/v1/rbac/roles… roles.manage
PUT /api/v1/rbac/roles/{id}/permissions roles.manage

Эрхийн шалгалт нь route түвшинд middleware-ээр хийгдэнэ (RequirePermission) — handler бүрт давтагдахгүй тул шинэ endpoint нэмэхэд хамгаалалт мартагдах эрсдэл багасна. routes_authz_matrix_test.go нь энэ матрицыг тестээр барьцаална.

UI: /admin/roles.

Админы гадаргуу

Метод Зам Эрх
GET POST /api/v1/admin/users users.manage
PUT /api/v1/admin/users/{id}/role · /active users.manage
DELETE /api/v1/admin/users/{id} users.manage
GET PUT /api/v1/admin/ai/prompts · /{key} settings.manage
POST /api/v1/admin/ai/knowledge/reindex settings.manage

AI-ийн prompt давхарга ба мэдлэгийн санг DB-ээс тохируулна — AI pipeline-г үз. Гуардрэйл давхарга нь кодод хатуу бөгөөд хэзээ ч тохируулагддаггүй.

UI: /admin/dashboard, /admin/users, /admin/settings, /admin/core.

Супер админ

Метод Зам Юу
GET POST /api/v1/superadmin/admins Админ жагсаах / нэмэх
GET POST /api/v1/superadmin/admins/by-register Регистрийн дугаараар хайх / нэмэх
PUT /api/v1/superadmin/admins/{id}/grant Эрх олгох
DELETE /api/v1/superadmin/admins/{id} Эрх хураах
GET POST DELETE /api/v1/superadmin/invites… Урилга удирдах
GET PUT /api/v1/superadmin/access-mode Платформын хандалтын горим (public / private)

Onboarding ба MFA

Супер админ болох замыг олон давхар баталгаагаар хамгаалсан:

  • Урилга (allow-list) — onboarding нь урилгагүй и-мэйлээр эхэлж чадахгүй. Ашигласан урилга дахин хэрэглэгдэхгүй.
  • eID баталгааPOST /api/v1/auth/superadmin/onboard/eid/start · /start-id · /poll (иргэний РД эсвэл QR).
  • Google эсвэл и-мэйл баталгаа/onboard/google, /onboard/email/send · /verify.
  • TOTP MFA/onboard/totp/init · /verify, дараа нь нэвтрэх бүрд POST /api/v1/auth/superadmin/mfa.

TOTP secret нь AES-GCM ciphertext-ээр хадгалагдана — DB-д ил текст хэзээ ч байхгүй. Нөөц кодууд нь зөвхөн үүсгэх агшинд нэг удаа харагдаж, DB-д зөвхөн SHA-256 hash хадгалагдана; ашигласан код дахин хэрэглэгдэхгүй.

Бүх onboarding endpoint нь auth хязгаарлагчтай (5/мин).

UI: /superadmin/login, /superadmin/onboard, /admin/superadmin.

Аудит

Аудит бүртгэл нь hash-chain-ээр холбогдсон, зөвхөн-нэмэх (append-only) бүртгэл. Бичлэг бүр өмнөх бичлэгийн hash-ыг агуулдаг тул дундаас нь мөр өөрчлөх/устгах нь гинжийг таслана.

Метод Зам Юу
GET /api/v1/audit Хуудаслагдсан жагсаалт (admin)
GET /api/v1/audit/verify Гинжийн бүрэн бүтэн байдлын шалгалт

verify нь { ok, broken_id } буцаана — ok=false үед эвдэрсэн эхний мөрийн ID-г зааж өгнө.

Бичих actor нь хүсэлтийн RLS identity-ээс, request_id нь context-оос автоматаар уншигдана — дуудагч гараар дамжуулах шаардлагагүй тул хуурамч attribution хийх боломж бага.

Микросекундын нарийвчлал

Postgres timestamptz нь микросекунд нарийвчлалтай. Hash-д орох цагийг түүнд тааруулж таслаагүй бол VerifyChain нь наносекундын зөрүүнээс болж худал сөрөг өгнө — код үүнийг зориуд зохицуулсан.

UI: /admin/audit.

Аюулгүйн үйл явдал

Клиент талын аюулгүйн дохиог (CSP зөрчил г.м.) цуглуулна:

  • POST /api/v1/security/events — нэвтэрсэн хэрэглэгч бүрт нээлттэй (RLS нь user_id-г баталгаажуулна)
  • GET /api/v1/security/eventsзөвхөн admin

UI: /admin/security.

Харагдац ба брэнд

Өнгө, фонт, нягтралыг кодод hardcode хийхгүй — админаас тохируулна.

Метод Зам Эрх
GET /api/v1/site/appearance нээлттэй (нийтийн хуудсанд хэрэгтэй)
PUT /api/v1/site/appearance settings.manage
GET /api/v1/themes/active нээлттэй
GET POST PUT DELETE /api/v1/themes… admin
PUT /api/v1/themes/{id}/active admin

Хэрэглэгч тус бүр өөрийн override-той байж болно. UI: /admin/themes, /admin/settings.