Rollar və girişlər üzrə interfeyslər
1) Prinsiplər
1. Təhlükəsizlik = UX-tapşırıq. İstifadəçi «boz zonalar» olmadan nə edə biləcəyini və edə bilməyəcəyini aydın şəkildə başa düşməlidir.
2. Minimum tələb olunan hüquqlar. Ekrandan hərəkətlərə qədər - hər şey rol vəzifələri ilə məhdudlaşır.
3. Qadağan əvəzinə siqnal. Giriş yoxdursa, niyə və necə alınacağını izah edirik (sorğu, müraciət, təlim).
4. Serverdə dublyaj. UI qvardları heç vaxt server yoxlamalarını əvəz etmir.
5. Şəffaf audit. Hər həssas hərəkət oxunan iz buraxır.
2) Giriş nəzarət modelləri
RBAC (Role-Based): Sabit rollar: Oyunçu, Sapport, Maliyyə, Risk/Komplayens, Affiliate Manager, Moderator, Admin.
ABAC (Attribute-Based): atributlara əsaslanan siyasət (yurisdiksiya, marka, saat zonası, VIP səviyyəsi, komanda, növbə).
ReBAC (Relationship-Based): əlaqələr üzrə giriş (oyunçu kuratoru, bilet sahibi, tərəfdaş meneceri).
SoD (Segregation of Duties): kritik vəzifələrin ayrılması (yaradıldı ≠ təsdiqləndi).
Təcrübə: bazis kimi RBAC, incə konfiqurasiya üçün ABAC (marka/region), maliyyə/limitlər üçün SoD, ReBAC - nöqtəli (nəzarət portfellər).
3) Rollar üçün funksiyalar xəritəsi (iGaming nümunəsi)
4) Hüquq və rollar üçün UX nümunələri
4. 1 Naviqasiya və görünürlük
Mövcud olmayan bölmələri naviqasiyadan gizlətmək (səs-küyün azaldılması), lakin imkanları anlamağa kömək edirsə, məlumat «boş» kartları göstərin.
Müvəqqəti əlçatmaz üçün - «Kilid» ipucu ilə: səbəb, tələblər, CTA «Giriş tələb et».
4. 2 Fəaliyyət halları
Disabled + tooltip: "Maliyyə rolu tələb olunur. Giriş tələb edin".
Read-only rejimi: «şüşə altında» sahələr, «Yalnız oxu» markeri.
Eskalasiya: «Tətbiq et» əvəzinə «Təsdiq göndər» düyməsi.
4. 3 Maskalama və redaktə
PII (email, telefon, ünvan) - 'user @.', '+ 380 90' başqalarının qeydləri üçün.
PAN/IBAN - yalnız tokenlər/son 4.
«Tam göstər» açarı - yalnız auditlə əlaqəli rol/hadisə üçün.
5) UI-də icazə arxitekturası
Müştəridə policy konteksti: icazə cache (TTL qısa) + yeniləmələrə abunə.
Marşrutların qvardları: əlçatmaz marşrutlar → 403-səhifə izah və CTA ilə.
Komponentlərin qvardları: 'Can ({action:' approve _ withdrawal ', resource:' payout '})'.
Ficheflages: eksperimental/mövsümi şeylər - hüquqlardan ayrı.
tsx type Permission = string; // 'payout.approve', 'kyc.view_masked'
type Policy = { has:(p:Permission)=>boolean };
const PolicyCtx = React.createContext<Policy>({ has:()=>false });
export const Can: React.FC<{perm:Permission, children:React.ReactNode, fallback?:React.ReactNode}>
= ({perm, children, fallback=null}) => {
const { has } = React.useContext(PolicyCtx);
return has(perm)? <>{children}</>: <>{fallback}</>;
};
6) Server> Müştəri
Hər hansı bir hərəkət markaları (rolu, atributları) olan bir token vasitəsilə təsdiqlənir.
Siyasətçilər mərkəzləşdirilmiş (PDP/OPA/Cedar/Zanzibar kimi), UI yalnız həll alır.
Bütün kritik əməliyyatlar iki faktorlu təsdiq + auditdir.
7) Maska və qırmızı məlumat zonaları
Verilənlər kateqoriyası:- PII: adı, email, telefon, ünvan, doğum tarixi.
- Maliyyə: PAN/IBAN/kriptovalyutalar, məbləğlər, limitlər, bonus balansları.
- Sənədlər: pasport/ID/selfi (KYC).
- Oyun: bahis tarixi/uduşlar/nümunələr.
- Tam - rol sahibi/yazının sahibi.
- Maskalı - sapport, maliyyə (sahibi deyil).
- Aqreqatlı - analitika (identifikatorsuz).
tsx function Redact({text, perm}:{text:string, perm:Permission}){
const { has } = React.useContext(PolicyCtx);
return <span>{has(perm)? text: text.replace(/.(?=.{4})/g,'•')}</span>;
}
8) Təsdiq axını (Approvals) və SoD
Dörd göz: təşəbbüskar ≠ təsdiq.
Çox mərhələli marşrutlar (məsələn, məbləğlər> X → 2-ci xətt).
Ərizələrin etibarlılıq müddəti, SLA, eskalasiya.
Jurnal: Kim yaratdı, kim dəyişdi, kim təsdiqlədi, nə vaxt və haradan.
Nümunələr: geri çəkilmənin təsdiqlənməsi, oyunçu limitlərinin dəyişdirilməsi, KYC hökmü, sanksiya bayrağının qaldırılması.
9) iGaming xüsusiyyətləri
Limitlər və özünü istisna: yalnız SoD və məcburi istifadəçi bildirişi ilə dəyişiklik.
KYC/AML: sənədlərə giriş - dar rol; miniatürləri əvvəlcədən görmək, tam ölçü - log ilə ayrıca hərəkət.
Sanksiya/RER bayraqları: risk komandasına görünür; sapport - yalnız «yoxlama lazımdır» statusu.
Ödənişlər/nəticələr: «keçirmək/rədd etmək» - yalnız Maliyyə rolu; həddindən yuxarı məbləğlər - ikiqat təsdiq.
Bahis jurnalları: sapport oxuyur, lakin redaktə etmir; düzəlişlər - istintaqla ayrı bir funksiya.
10) Lokalizasiya, A11y, RTL
«Giriş yoxdur» mətnləri lokallaşdırılır və mövcud yolları ehtiva edir (ərizə/təlim).
Fokusun idarə edilməsi: istifadəçini izahat olmadan «boş» səhifəyə köçürməyin.
Müvafiq bölgələrdə rollar üçün RTL rejimi dəstəklənir.
A11y: 'aria-disabled' + izahat, eskalasiyanın klaviatura əlçatanlığı.
11) Hallar və səhvlər
403 (heç bir haqq yoxdur): rolu kontekstli dost səhifə və CTA «Access tələb».
404 (resurs yoxdur): gizli obyektlərin mövcudluğunu açıqlamayın.
413/422 (çox/validasiya): siyasətin detallarını sızdırmayın, neytral şəkildə formalaşdırın.
Rate-limits/kilidi: zamanlayıcını/kilidini açma şərtini izah edin.
12) Metrika
Access Denied Rate: rollarda/ekranlarda uğursuzluqların payı (pis IA və ya siyasət haqqında siqnal).
Approval SLA: Media vaxt təsdiqləmə axını (çıxış, limitlər, KYC).
Mask Reveal Events: PII «açıqlama» tezliyi (gözlənilən kiçik və əsaslı).
Error-to-Resolution: 403-dən verilən girişə qədər vaxt.
Least-Privilege Drift: həddindən artıq hüquqlarla rollar (istifadə detekti).
13) Anti-nümunələr
Səhvləri «heç nə olmadı» altında gizlətmək.
Boş düymələri heç bir izahat olmadan göstər.
Öz məlumatlarını sahibinə gizlətmək.
Server siyasətləri olmadan UI qvardlarına güvənmək.
Faylları girişlərlə qarışdırın (müxtəlif vəzifələr).
Rahatlıq üçün «god-mode» portunu verin.
14) Dizayn sistemi tokenləri (nümunə)
json
{
"access": {
"badge": { "viewer":"#607D8B", "editor":"#4CAF50", "approver":"#FF9800", "admin":"#9C27B0" },
"lockColor": "#9E9E9E",
"maskChar": "•"
},
"states": {
"noAccess": { "bg":"var(--bg-elev)", "border":"var(--border)", "icon":"#9E9E9E" },
"approval": { "pending":"#FFC107", "approved":"#4CAF50", "rejected":"#F44336" }
},
"a11y": { "ariaDisabled": true, "explainDenial": true }
}
15) Snippet UI
Marşrut qvard:tsx import { Navigate, Outlet } from 'react-router-dom';
function GuardedRoute({perm}:{perm:Permission}){
const { has } = React.useContext(PolicyCtx);
if (has(perm)) return <Outlet/>;
return <Navigate to={`/403?perm=${encodeURIComponent(perm)}`} replace/>;
}
CTA ilə «giriş yoxdur» kartı:
html
<article class="no-access">
<h3>Недостаточно прав</h3>
<p>Доступ к разделу «Выплаты» доступен ролям: Финансы/Админ.</p>
<button class="btn" data-open-request>Запросить доступ</button>
</article>
Audit jurnalı (qısaca):
json
{
"ts": "2025-11-03T18:45:12Z",
"actor": "u_5412",
"action": "payout.approve",
"target": "withdraw#w_91822",
"ip": "194...12",
"result": "success"
}
16) QA-çek siyahısı
Naviqasiya və IA
- Əlçatmaz bölmələr menyuda səs-küy salmır.
- CTA ilə başa düşülən «heç bir giriş» səhifələri/kartları var.
Fəaliyyət və qvardlar
- Hüquqsuz düymələr - 'disabled' + tooltip/mətn.
- Routes qorunur; izahat ilə birbaşa URL → 403.
- Server hər hərəkəti təsdiqləyir.
Məlumatlar
- PII/PAN/KYC siyasətə görə maskalanır.
- «Açma» loqları yazılır və qısqanclıqla qarşılanır.
- İxrac/hesabatlar rollara uyğundur (analitika üçün aqreqatlar).
SoD/Approvals
- Təşəbbüskar ərizəsini təsdiq edə bilməz.
- Eşik məbləği → çox mərhələli marşrutlar.
A11u/Lokalizasiya
- «No access» lokallaşdırılmış; klaviatura naviqasiya işləyir.
- Kontrast/Focus Ring AA uyğun gəlir.
Etibarlılıq
- Qısa TTL ilə icazə cache; rolun dəyişməsi zamanı əlillik.
- PDP → UI düşməsi «defolt təhlükəsiz» rejimində işləyir.
17) Dizayn sistemində sənədləşmə
Компоненты: `GuardedRoute`, `Can`, `NoAccessCard`, `ApprovalBanner`, `Redact`.
Siyasət: rol/hərəkət matrisi, SoD qaydaları, kamuflyaj səviyyələri.
Proses: giriş sorğusu, rolların öyrənilməsi/sertifikatlaşdırılması, N həftədə bir dəfə hüquqların yoxlanılması.
Do/Don 't-qalereyası: «səbəbsiz boş düymələr», «sahibinə maskalanma», «server yoxlamaları olmadan UI» və «izah edilmiş məhdudiyyətlər və CTA».
Qısa xülasə
Rol interfeysləri başa düşülən informasiya arxitekturası + sərt siyasət + mehriban izahlardır. Yalnız lazım olanı göstərin, həssas məlumatları maskalayın, marşrutları və hərəkətləri mühafizəçilər tərəfindən qoruyun, auditdə hər kritik hadisəni qeyd edin və pula və uyğunluğa təsir edən vəzifələri bölüşün. iGaming-də bu, riskləri azaltmaqla yanaşı, komandaların işini daha sürətli və sakit edir.