GH GambleHub

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)

BölməOyunçuSapportMaliyyəKomplayens/RiskAffiliatesAdmin
Profil/Limitlər(öz)R/W (istək üzrə)RR/W (kəsik.) RR
Ödənişlər (depozitlər/nəticələr)(öz)RR/W (icra)R/W (freeze/hold)RR
KOS/sənədlər(öz)R (qismən maskir.) R (maskir.) R/W (hökm)R
Bahislər/tarix(öz)RRRR
Promo/bonuslarR/W (hesabla)RR/W (tərəfdaşlar)R
İstifadəçilərR (bilet üzrə)RR (tərəfdaşlar)R/W
R - oxumaq, W - yazmaq. Maska - məlumat siyasəti (PII/PAN/KYC).

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ı.

Snippet (React):
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.
Ekran siyasəti:
  • Tam - rol sahibi/yazının sahibi.
  • Maskalı - sapport, maliyyə (sahibi deyil).
  • Aqreqatlı - analitika (identifikatorsuz).
Maskalanma komponenti:
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.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.