Rollar va ulanishlar boʻyicha interfeyslar
1) Qonunning
1. Xavfsizlik = UX vazifasi. Foydalanuvchi «kulrang zonalarsiz» nima qila olishini va qila olmasligini aniq tushunishi kerak.
2. Minimal zarur huquqlar. Koʻrsatishdan harakatlargacha - hamma narsa rol vazifalari bilan cheklangan.
3. Taqiqlash oʻrniga signal. Agar kirish imkoni bo’lmasa, nima uchun va qanday olish kerakligini tushuntiramiz (so’rov, ariza, o’qish).
4. Serverda takrorlash. UI gvardlar hech qachon server tekshiruvlarini almashtirmaydi.
5. Shaffof audit. Har bir sezgir harakat o’qiladigan iz qoldiradi.
2) Kirishni boshqarish modellari
RBAC (Role-Based): belgilangan rollar: Oʻyinchi, Sapport, Moliya, Tavakkal/Komplayens, Affiliat-menejer, Moderator, Admin.
ABAC (Attribute-Based): atributlarga asoslangan siyosat (yurisdiksiya, brend, vaqt zonasi, VIP darajasi, jamoa, smena).
ReBAC (Relationship-Based): munosabatlar bo’yicha kirish (o’yinchi kuratori, chipta egasi, sherik menejeri).
SoD (Segregation of Duties): tanqidiy vazifalarni ajratish (yaratgan ≠ tasdiqlagan).
Amaliyot: RBAC bazis sifatida, ABAC nozik sozlash uchun (brend/mintaqa), SoD moliya/limitlar uchun, ReBAC - nuqtaviy (nazorat qilinadigan portfellar).
3) Rollar bo’yicha funksiyalar xaritasi (iGaming misoli)
4) Huquq va rollar uchun UX-patternlar
4. 1 Navigatsiya va ko’rinish
Navigatsiyadagi mavjud bo’lmagan bo’limlarni yashiring (shovqinni kamaytirish), lekin agar bu imkoniyatlarni tushunishga yordam bersa, «bo’sh» kartochkalarni ko’rsating.
Vaqtincha mavjud bo’lmagan «Qulf» uchun: sababi, talablari, CTA «Kirish so’rash».
4. 2. Harakatlarning holati
Disabled + tooltip: "Moliya rolini talab qiladi. Kirish soʻrash".
Read-only rejimi: «shisha ostidagi» maydonlar, «Faqat o’qish» aniq markeri.
Eskalatsiya: «Qoʻllash» oʻrniga «Tasdiqlash uchun yuborish» tugmasi.
4. 3 Niqoblash va tahrir qilish
PII (email, telefon, manzil) -’user @.’,’+ 380 90’boshqa odamlarning yozuvlari uchun.
PAN/IBAN - faqat tokenlar/oxirgi 4.
«To’liq ko’rsatish» - faqat audit bilan bog’liq bo’lgan rol/voqea uchun.
5) UIdagi ruxsatnomalar arxitekturasi
Mijozdagi policy kontekst: ruxsatnomalar keshi (TTL qisqa) + yangilanishlarga obuna.
Yo’nalish gvardlari: mavjud bo’lmagan routlar → 403-sahifada tushuntirish va CTA.
’Can ({action:’ approve _ withdrawal’, resource:’payout’}).
Ficheflaglar: eksperimental/mavsumiy narsalar - huquqlardan alohida.
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> Mijoz
Har qanday harakat token (rol, atributlar) bilan tasdiqlanadi.
Siyosatchilar markazlashgan (PDP/OPA/Cedar/Zanzibar kabi), UI faqat yechim oladi.
Barcha tanqidiy operatsiyalar - ikki faktorli tasdiqlash + audit.
7) Niqoblash va ma’lumotlarning qizil zonalari
Maʼlumotlar toifasi:- PII: ismi, email, telefon raqami, manzili, tug’ilgan sanasi.
- Moliya: PAN/IBAN/kriptokoshelkalar, summalar, limitlar, bonus balanslar.
- Hujjatlar: pasport/ID/selfi (KYC).
- O’yin: stavkalar/yutuqlar/patternlar tarixi.
- To’liq - rolga ega/yozuv egasi.
- Niqoblangan - sapport, moliya (egasi emas).
- Agregatsiyalangan - analitika (identifikatorsiz).
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) Tasdiqlash oqimlari (Approvals) va SoD
To’rt ko’z: tashabbuskor ≠ tasdiqlovchi.
Ko’p bosqichli yo’nalishlar (masalan, summalar> X → 2-chiziq).
Talabnomalar, SLA, eskalatsiyaning amal qilish muddati.
Jurnal: kim yaratdi, kim oʻzgartirdi, kim tasdiqladi, qachon va qayerdan.
Misollar: chetga chiqishni tasdiqlash, o’yinchi limitlarini o’zgartirish, KYC hukmi, sanksiya bayrog’ini olib tashlash.
9) iGaming xususiyatlari
Limitlar va o’z-o’zidan chiqarib tashlash: faqat SoD va foydalanuvchini majburiy ravishda xabardor qilish bilan o’zgartirish.
KYC/AML: hujjatlardan foydalanish - tor vazifa; miniatyuralarni oldindan ko’rish, to’liq o’lchov - log bilan alohida harakat bo’yicha.
Sanksiya/RER bayroqlari: xavf-jamoa ko’rinadi; safport - faqat «tekshirish kerak» maqomi.
To’lovlar/xulosalar: «o’tkazish/rad etish» - faqat Moliya roli; chegaradan yuqori summalar - ikki baravar tasdiqlash.
Stavkalar jurnallari: sapport o’qiydi, lekin tahrir qilmaydi; tuzatishlar - tekshirish bilan alohida funksiya.
10) Mahalliylashtirish, A11y, RTL
«Kirish imkoni yo’q» matnlari mahalliylashtiriladi va mavjud yo’llarni (buyurtma/o’qitish) o’z ichiga oladi.
Fokusni boshqarish: tushuntirishsiz foydalanuvchini «boʻsh» sahifaga koʻchirib boʻlmaydi.
Tegishli hududlardagi rollar uchun RTL rejimi qoʻllanilgan.
A11y:’aria-disabled’+ tushuntirish, eskalatsiyaning klaviatura imkoniyatlari.
11) Holatlar va xatolar
403 (hech qanday huquq yo’q): «Kirish so’rash» CTA va rol kontekstiga ega do’stona sahifa.
404 (resurs mavjud emas): yashirin obʼektlarning mavjudligini oshkor qilmaslik.
413/422 (juda ko’p/validatsiya): siyosat tafsilotlarini to’kib tashlamang, neytral shakllantiring.
Rate-limits/blokirovka: Taymer/blokirovka qilish shartini tushuntiring.
12) Metrika
Access Denied Rate: rollar/ekranlar bo’yicha nosozliklar ulushi (yomon IA yoki siyosat haqida signal).
Approval SLA: oqimlar bo’yicha tasdiqlash vaqtining mediani (chiqish, limitlar, KYC).
Mask Reveal Events: PII «oshkor qilish» chastotasi (kutilgan darajada kichik va asosli).
Error-to-Resolution: 403 dan berilgan foydalanishga qadar.
Least-Privilege Drift: ortiqcha huquqli rollar (foydalanish detekti).
13) Anti-patternlar
Xatolarni «hech narsa boʻlmadi» deb yashirish.
Boʻsh tugmalarni izohsiz koʻrsatish.
Egasining shaxsiy maʼlumotlarini yashirish.
Server siyosati bo’lmagan UI-guardlarga tayanish.
Ficheflaglarni kirish bilan aralashtirish (turli vazifalar).
Qulaylik uchun «god-mode» portini berish.
14) Dizayn-tizim tokenlari (misol)
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) Snippetlar UI
Marshrut gvard: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 kartochkasi:
html
<article class="no-access">
<h3>Недостаточно прав</h3>
<p>Доступ к разделу «Выплаты» доступен ролям: Финансы/Админ.</p>
<button class="btn" data-open-request>Запросить доступ</button>
</article>
Audit jurnali (qisqartirilgan):
json
{
"ts": "2025-11-03T18:45:12Z",
"actor": "u_5412",
"action": "payout.approve",
"target": "withdraw#w_91822",
"ip": "194...12",
"result": "success"
}
16) QA-chek-varaq
Navigatsiya va IA
- Menyuda mavjud boʻlmagan boʻlimlar shovqin qilmaydi.
- CTA bilan tushunarli sahifalar/kartalar mavjud.
Amallar va gvardlar
- Huquqsiz tugmalar -’disabled’+ tooltip/matn.
- Routlar himoyalangan; to’g’ridan-to’g’ri URL → 403 tushuntirish bilan.
- Server har bir harakatni tasdiqlaydi.
Maʼlumotlar
- PII/PAN/KYC siyosatga ko’ra yashiringan.
- «Oshkor etish» kitoblari yoziladi va qisqartiladi.
- Eksport/hisobotlar rolga mos keladi (tahlil uchun agregatlar).
SoD/Approvals
- Tashabbuskor o’z arizasini tasdiqlay olmaydi.
- Chegara summalari → ko’p bosqichli yo’nalishlar.
A11u/Lokalizatsiya
- «Kirish yoʻq» mahalliylashtirilgan; klaviatura navigatsiyasi ishlamoqda.
- Kontrast/fokus halqa AA ga mos keladi.
Ishonchlilik
- TTL qisqa ruxsatnomalar keshi; roli o’zgarganda nogironlik.
- PDP → UI qulashi «defolt xavfsiz» rejimida ishlaydi.
17) Dizayn-tizimdagi hujjatlar
Компоненты: `GuardedRoute`, `Can`, `NoAccessCard`, `ApprovalBanner`, `Redact`.
Siyosat: rol/harakat matritsasi, SoD qoidalari, kamuflyaj darajalari.
Jarayon: kirish so’rovi, rollarni o’qitish/sertifikatlash, N haftada bir marta huquqlarni taftish qilish.
Do/Don’t-galereyasi: «hech qanday sababsiz bo’sh tugmalar», «egasiga niqob», «server tekshiruvisiz UI» va «tushuntirilgan cheklovlar va CTA».
Qisqacha xulosa
Rol interfeyslari tushunarli axborot arxitekturasi + qat’iy siyosat + do’stona tushuntirishdir. Faqat kerakli ma’lumotlarni ko’rsating, nozik ma’lumotlarni yashiring, yo’nalishlar va harakatlarni gvardiya bilan himoya qiling, auditdagi har bir muhim voqeani qayd qiling va pul va komplayensga ta’sir qiladigan vazifalarni baham ko’ring. iGaming’da bu nafaqat xavflarni kamaytiradi, balki jamoalarning ishini tezroq va xotirjam qiladi.