GH GambleHub

Рөлдер мен рұқсаттар бойынша интерфейстер

1) Қағидаттар

1. Қауіпсіздік = UX-міндет. Пайдаланушы «сұр аймақсыз» не істей алатынын және істей алмайтынын анық түсінуі тиіс.
2. Ең аз қажетті құқықтар. Бейнелеуден әрекеттерге дейін - барлығы рөл тапсырмаларымен шектелген.
3. Тыйым салу орнына сигнал. Егер қолжетімділік болмаса - неге және қалай алуға болатынын түсіндіреміз (сұрау салу, өтінім, оқыту).
4. Серверде қайталау. UI-гвардтар серверлік тексерулерді ешқашан алмастырмайды.
5. Мөлдір аудит. Әрбір сезімтал әрекет оқылатын із қалдырады.


2) Кіруді басқару модельдері

RBAC (Role-Based): бекітілген рөлдер: Ойыншы, Саппорт, Қаржы, Тәуекел/Комплаенс, Аффилиат-менеджер, Модератор, Әкімші.
ABAC (Attribute-Based): атрибуттар негізіндегі саясат (юрисдикция, бренд, уақыт белдеуі, VIP деңгейі, команда, ауысым).
ReBAC (Relationship-Based): қатынас бойынша қолжетімділік (ойыншының кураторы, тикет иесі, серіктес менеджері).
SoD (Segregation of Duties): сындарлы міндеттерді бөлу (құрған ≠ бекіткен).

Практика: RBAC базис ретінде, ABAC (бренд/өңір), SoD қаржы/лимиттер үшін, ReBAC - нүктелі (қадағаланатын портфельдер).


3) Рөлдер бойынша функциялар картасы (iGaming мысалы)

БөлімОйыншыСаппортҚаржыКомплаенс/ТәуекелАффилиаттарАдмин
Профиль/лимиттер(өз)R/W (сұрау бойынша)RR/W (қырлы) RR
Төлемдер (депозиттер/қорытындылар)(өз)RR/W (жүргізу)R/W (freeze/hold)RR
ҚҰЖ/құжаттар(өз)R (ішінара маскир.) R (маскир.) R/W (үкім)R
Ставкалар/тарихы(өз)RRRR
Промо/бонустарR/W (есептеу)RR/W (серіктестер)R
ПайдаланушыларR (тикет бойынша)RR (серіктестер)R/W
R - оқу, W - жазу. Бүркемелеу - деректер саясаты бойынша (PII/PAN/KYC).

4) Құқықтар мен рөлдерге арналған UX-үлгілер

4. 1 Навигация және көріну

Навигациядан қол жетімді емес бөлімдерді жасырыңыз (шуды азайту), бірақ мүмкіндіктерді түсінуге көмектесетін болса, «бос» карталарды көрсетіңіз.
Уақытша қол жетімсіз үшін - «Құлып»: себебі, талаптары, CTA «Қол жеткізуді сұрату».

4. 2 Әрекеттер күйі

Disabled + tooltip: "Қаржы рөлі талап етіледі. Қатынас сұраңыз".
Read-only режимі: «шыны астындағы» өрістер, «Тек оқу» айқын таңбасы.
Эскалация: «Қолдану» орнына «Бекітуге жіберу» түймешігі.

4. 3 Бүркемелеу және редакциялау

PII (email, телефон, мекенжай) - 'user @.', '+ 380 90' басқалардың жазбалары үшін.
PAN/IBAN - тек токендер/соңғы 4.
«Толық көрсету» қосқышы - тек қана рөлді иеленуші үшін/аудит оқиғасы бойынша.


5) UI рұқсаттар архитектурасы

Клиенттегі Policy контекст: рұқсат кэші (TTL қысқа) + жаңарту жазылымы.
Маршруттардың гварды: қол жетімді емес роуттар → 403-бет түсіндірме және CTA.
Құрауыштардың шегендері: 'Can ({action:' approve _ withdrawal ', resource:' payout '})'.
Фичефлагтар: эксперименттік/маусымдық заттар - құқықтардан бөлек.

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) Сервер> Клиент

Кез келген әрекетті таңбалары (рөлі, төлсипаттары) бар токен бойынша сервер растайды.
Саясаттар орталықтандырылған (PDP/OPA/Cedar/Zanzibar сияқты), UI тек шешімді алады.
Барлық күрделі операциялар - екі факторлы растау + аудит.


7) Бүркемелеу және деректердің қызыл аймақтары

Деректер санаттары:
  • PII: аты, email, телефоны, мекенжайы, туған күні.
  • Қаржы: PAN/IBAN/крипто қапшықтар, сомалар, лимиттер, бонустық баланстар.
  • Құжаттар: паспорттар/ID/селфи (KYC).
  • Ойын: ставкалар/ұтыстар/паттерндер тарихы.
Көрсету саясаты:
  • Толық - рөлге ие/жазбаның иесі.
  • Бүркемеленген - саппорт, қаржы (иесі емес).
  • Біріктірілген - талдау (сәйкестендіргіштерсіз).
Бүркемелеу компоненті:
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) Бекіту ағындары (Approvals) және SoD

Төрт көз: бастамашы ≠ бекітуші.
Көп сатылы бағыттар (мысалы, сомалар> X → 2-ші сызық).
Өтінімдердің, SLA, эскалацияның қолданылу мерзімі.
Журнал: кім құрды, кім өзгертті, кім бекітті, қашан және қайдан.

Мысалдар: шығаруды растау, ойыншының лимиттерін өзгерту, KYC үкімі, санкциялық жалауды алып тастау.


9) iGaming ерекшелігі

Лимиттер және өзін-өзі жою: өзгерту тек SoD және пайдаланушының міндетті хабарламасымен.
KYC/AML: құжаттарға қол жеткізу - тар рөл; миниатюраларды алдын ала қарау, толық өлшем - логмен жеке әрекет бойынша.
Санкциялық/РЕР-жалаулар: тәуекел-командаға көрініп тұрады; саппорт - тек «тексеру қажет» мәртебесі.
Төлемдер/қорытындылар: «жүргізу/қабылдамау» - тек Қаржы рөлі; шектен жоғары сомалар - қосарланған растау.
Ставкалар журналы: саппорт оқиды, бірақ редакцияламайды; түзетулер - тексеруі бар жеке функция.


10) Локализация, A11y, RTL

«Қолжетімділік жоқ» деген мәтіндер оқшауланады және қолданыстағы жолдардан тұрады (өтінім/оқыту).
Фокусты басқару: пайдаланушыны түсіндірмей «бос» бетке ауыстыруға болмайды.
RTL режимі тиісті өңірлердегі рөлдер үшін қолдау тапты.
A11y: 'aria-disabled' + түсіндірме, эскалацияның пернетақталық қолжетімділігі.


11) Жай-күйлер мен қателер

403 (рұқсат жоқ): рөлі және CTA мәтіні бар достық бет «Қатынасуға сұрау салу».
404 (ресурс жоқ): жасырын нысандардың бар екенін ашпау.
413/422 (тым көп/валидация): саясаттың бөлшектерін біріктірмеңіз, бейтарап тұжырымдаңыз.
Rate-limits/бұғаттау: таймерді/бұғаттан шығару шартын түсіндіріңіз.


12) Метрика

Access Denied Rate: рөлдер/экрандар бойынша істен шығу үлесі (нашар IA немесе саясат туралы сигнал).
Approval SLA: ағындар бойынша бекіту уақытының медианы (шығару, лимиттер, KYC).
Mask Reveal Events: PII «ашылу» жиілігі (күтілетін аз және негізделген).
Error-to-Resolution: 403-тен берілген қатынасқа дейінгі уақыт.
Least-Privilege Drift: артық құқықты рөлдер (пайдалану бойынша жоба).


13) Қарсы үлгілер

Қателерді «ештеңе болған жоқ» деп жасыру.
Бос батырмаларды түсіндірмей көрсету.
Иесінің жеке деректерін жасыру.
Серверлік саясаттарсыз UI-гвардаларға сүйену.
Фичефлагтарды қатынаспен араластыру (әр түрлі тапсырмалар).
Қолайлылық үшін «god-mode» саппортын беру.


14) Дизайн-жүйе токендері (мысал)

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) UI сниппеттері

Маршруттық гвард:
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 бар «қолжетімділік жоқ» карточкасы:
html
<article class="no-access">
<h3>Недостаточно прав</h3>
<p>Доступ к разделу «Выплаты» доступен ролям: Финансы/Админ.</p>
<button class="btn" data-open-request>Запросить доступ</button>
</article>
Аудит журналы (қысқаша):
json
{
"ts": "2025-11-03T18:45:12Z",
"actor": "u_5412",
"action": "payout.approve",
"target": "withdraw#w_91822",
"ip": "194...12",
"result": "success"
}

16) QA-чек парағы

Навигация және IA

  • Қол жетімді емес бөлімдер мәзірде шулы емес.
  • CTA бар түсінікті беттер/карточкалар бар.

Әрекеттер мен гвардалар

  • Рұқсатсыз түймешіктер - 'disabled' + tooltip/мәтін.
  • Роуттар қорғалған; түсіндірумен тікелей URL → 403.
  • Сервер әрбір әрекетті растайды.

Деректер

  • PII/PAN/KYC саясат бойынша бүркемеленеді.
  • «Ашулар» логтары жазылады және тексеріледі.
  • Экспорт/есептер рөлге сәйкес келеді (аналитикаға арналған агрегаттар).

SoD/Approvals

  • Бастамашы өзінің өтінімін бекіте алмайды.
  • Шекті сома → көп сатылы маршруттар.

А11у/Локализация

  • «Қатынас жоқ» жергілікті; пернетақталық навигация жұмыс істейді.
  • Контраст/фокус сақинасы АА сәйкес келеді.

Сенімділік

  • Қысқа TTL рұқсаттар кэші; рөлі ауысқан кездегі мүгедектік.
  • PDP → UI құлауы «дефолт қауіпсіз» режимінде жұмыс істейді.

17) Дизайн-жүйедегі құжаттама

Компоненты: `GuardedRoute`, `Can`, `NoAccessCard`, `ApprovalBanner`, `Redact`.
Саясат: рөлдер/әрекеттер матрицасы, SoD-ережелер, бүркемелеу деңгейлері.
Процесс: рұқсат сұрауы, рөлдерді оқыту/сертификаттау, N аптада бір рет құқықтарды тексеру.
Do/Don 't-галереясы: «себепсіз бос түймелер», «иесіне бүркемелеу», «серверлік тексерусіз UI» vs «түсіндірілген шектеулер және CTA».


Қысқаша түйіндеме

Рөлдік интерфейстер - бұл түсінікті ақпараттық сәулет + қатаң саясат + достық түсініктер. Тек қажеттіні көрсетіңіз, сезімтал деректерді жасырыңыз, бағыттар мен әрекеттерді гвардиялармен қорғаңыз, аудиттегі әрбір сыни оқиғаны белгілеңіз және ол ақша мен комплаенске әсер ететін жерде міндеттерді бөлісіңіз. iGaming-те бұл тәуекелдерді азайтып қана қоймай, командалардың жұмысын жылдам және тыныш етеді.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.