GH GambleHub

ინტერფეისები როლებსა და წვდომაზე

1) პრინციპები

1. უსაფრთხოება = UX ამოცანა. მომხმარებელმა უნდა გააცნობიეროს, თუ რა შეუძლია და ვერ გააკეთოს, „ნაცრისფერი ზონების“ გარეშე.
2. მინიმალური საჭირო უფლებები. ჩვენებიდან მოქმედებამდე - ყველაფერი შემოიფარგლება როლის დავალებებით.
3. აკრძალვის ნაცვლად სიგნალი. თუ წვდომა არ არის, ჩვენ ავუხსნით, თუ რატომ და როგორ უნდა მივიღოთ (მოთხოვნა, განაცხადი, ტრენინგი).
4. დუბლირება სერვერზე. UI გვარდიები არასოდეს შეცვლიან სერვერის შემოწმებებს.
5. გამჭვირვალე აუდიტი. თითოეული მგრძნობიარე მოქმედება ტოვებს წაკითხულ კვალს.


2) წვდომის კონტროლის მოდელები

RBAC (Role-Based): ფიქსირებული როლები: მოთამაშე, საფორტი, ფინანსები, რისკი/შესაბამისობა, აფილიატის მენეჯერი, მოდერატორი, ადმინი.
ABAC (Attribute-Based): ატრიბუტების დაფუძნებული პოლიტიკა (იურისდიქცია, ბრენდი, დროის ზონა, VIP დონე, გუნდი, შეცვლა).
ReBAC (Relationship-Based): ურთიერთობების წვდომა (მოთამაშის კურატორი, თიკეტის მფლობელი, პარტნიორის მენეჯერი).
SoD: კრიტიკული დავალებების გამიჯვნა (შექმნა და დაამტკიცა).

პრაქტიკა: RBAC, როგორც საფუძველი, ABAC თხელი კონფიგურაციისთვის (ბრენდი/რეგიონი), SoD ფინანსებისთვის/ლიმიტებისთვის, ReBAC - წერტილოვანი (ზედამხედველობითი პორტფელები).


3) ფუნქციების რუკა როლებზე (მაგალითი iGaming)

განყოფილებამოთამაშესაფორტიფინანსებიშესაბამისობა/რისკიაფფილიატებიადმინი
პროფილი/ლიმიტები(საკუთარი)R/W (თხოვნით)RR/W (შეზღუდული.) RR
გადახდები (ანაბრები/დასკვნები)(საკუთარი)RR/W (ჩატარება)R/W (freeze/hold)RR
KUS/დოკუმენტები(საკუთარი)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- ში

პოლიტიკა კონტექსტი კლიენტზე: ნებართვის ქეში (TTL მოკლე) + განახლება.
მარშრუტების გვარდიები: მიუწვდომელი როუტები - 403 გვერდი ახსნა და CTA.
კომპონენტების გვარდიები: 'Can ({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: სახელი, ელ.ფოსტა, ტელეფონი, მისამართი, დაბადების თარიღი.
  • ფინანსები: 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: დოკუმენტებზე წვდომა ვიწრო როლს ასრულებს; მინიატურების წინასწარი შემოწმება, სრულმასშტაბიანი - ცალკე მოქმედებით ლოგოთი.
სანქციები/RER დროშები: ჩანს რისკის გუნდი; sapport - მხოლოდ სტატუსი „საჭიროა შემოწმება“.
გადახდები/დასკვნები: „განხორციელება/უარყოფა“ - მხოლოდ ფინანსების როლი; ზღურბლზე მეტი თანხები ორმაგი დადასტურებაა.
ფსონების ჟურნალები: saport კითხულობს, მაგრამ არ რედაქტირებს; კორექტირება - გამოძიების ცალკეული ფუნქცია.


10) ლოკალიზაცია, A11y, RTL

ტექსტები „არ არის წვდომა“ ლოკალიზებულია და შეიცავს არსებულ გზებს (განაცხადი/ტრენინგი).
ფოკუსის კონტროლი: არ გადაიტანოთ მომხმარებელი „ცარიელ“ გვერდზე ახსნის გარეშე.
RTL რეჟიმს მხარს უჭერს შესაბამის რეგიონებში.
A11y: 'aria-disabled' + ახსნა, კლავიატურის დაშვება.


11) მდგომარეობა და შეცდომები

403 (მართალი არ არის): მეგობრული გვერდი როლის კონტექსტით და CTA „მოითხოვეთ წვდომა“.
404 (არ არსებობს რესურსი): არ გაამჟღავნოს ფარული ობიექტების არსებობა.
413/422 (ძალიან ბევრი/შესაბამისობა): არ დააკავშიროთ პოლიტიკის დეტალები, ჩამოაყალიბეთ ნეიტრალური.
დაბლოკვა/დაბლოკვა: აუხსენით ტაიმერი/განბლოკვის პირობა.


12) მეტრიკი

Access Denied Rate: როლების/ეკრანებზე უარის თქმის წილი (სიგნალი ცუდი IA ან პოლიტიკის შესახებ).
Approval SLA: ნაკადების დამტკიცების დრო საშუალო (დასკვნა, ლიმიტები, KYC).
Mask Reveal Events: „გამჟღავნების“ სიხშირე PII (მოსალოდნელია მცირე და გამართლებული).
Error-to-Resolution: დრო 403-დან გაცემულ წვდომამდე.
Least-Privilege Drift: როლები ჭარბი უფლებებით (გამოყენების დეტალი).


13) ანტი შაბლონები

შეცდომების დამალვა „არაფერი მომხდარა“.
აჩვენეთ ცარიელი ღილაკები ახსნის გარეშე.
შენიღბეთ მეპატრონე საკუთარი მონაცემებით.
დაეყრდნო UI გვარდიებს სერვერის პოლიტიკოსის გარეშე.
აურიეთ ficheflages წვდომით (სხვადასხვა დავალებები).
მიეცით capport „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) Snippets 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/ტექსტი.

დაცულია Routes; პირდაპირი URL 403 ახსნა.

  • სერვერი ადასტურებს თითოეულ მოქმედებას.

მონაცემები

  • PII/PAN/KYC შენიღბულია პოლიტიკით.
  • „გამჟღავნების“ ლოგოები იწერება და ეჭვიანობს.
  • ექსპორტი/მოხსენებები შეესაბამება როლებს (დანაყოფები ანალიტიკისთვის).

SoD/Approvals

  • ინიციატორს არ შეუძლია დაამტკიცოს თავისი განცხადება.
  • ბარიერი არის მრავალსაფეხურიანი მარშრუტები.

A11u/ლოკალიზაცია

  • „არ არის წვდომა“ ლოკალიზებულია; კლავიატურის ნავიგაცია მუშაობს.
  • კონტრასტი/ფოკუს რგოლები შეესაბამება AA- ს.

საიმედოობა

  • მოკლე 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 არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.