نقشها و مجوزهای صندوقدار
HandyCafe از کنترل دسترسی مبتنی بر نقش (RBAC) برای مدیریت دسترسی و عملیات هر عضو کارکنان در سیستم استفاده میکند. هر صندوقدار یک نقش دارد و آن نقش مجوزهای دقیق آنها در سراسر برنامه را تعیین میکند.
انواع نقش
HandyCafe سه نوع نقش ارائه میدهد:
مدیر
نقش مدیر دسترسی نامحدود به تمام قابلیتهای سیستم را فراهم میکند. مدیران میتوانند صندوقداران را مدیریت کنند، تمام گزارشها را مشاهده کنند، تنظیمات را تغییر دهند و هر عملیاتی انجام دهند. این نقش برای صاحبان کافه و مدیران ارشد طراحی شده که به کنترل کامل نیاز دارند.
همیشه حداقل یک حساب مدیر در سیستم وجود دارد. نقش مدیر قابل حذف نیست و مجوزهایش قابل کاهش نیستند.
پیشفرض
نقش پیشفرض هیچ مجوز خاصی ندارد. صندوقداری با نقش پیشفرض میتواند وارد شود و عملیات پایهای انجام دهد اما به بخشهای محدود مانند مدیریت اعضا، گزارشدهی یا پیکربندی کنسول دسترسی ندارد. این نقش را بهعنوان نقطه شروع برای نیروهای جدیدی استفاده کنید که فقط نیاز به انجام وظایف پایه دارند.
سفارشی
نقشهای سفارشی به شما امکان میدهند دقیقا مشخص کنید هر صندوقدار چه مجوزهایی دارد. یک نام انتخاب کنید، سطح را تعیین کنید و سپس پرچمهای مجوز فردی در شش دستهبندی را فعال یا غیرفعال کنید. این کنترل دقیقی بر دسترسی هر عضو کارکنان فراهم میکند.
دستهبندیهای مجوز
HandyCafe دارای ۲۲ پرچم مجوز فردی است که در ۶ دستهبندی سازماندهی شدهاند. هر پرچم یک عملیات یا نمایش خاص در سیستم را کنترل میکند.
۱. احراز هویت (۱ پرچم)
| پرچم | توضیحات |
|---|---|
| CLIENT_LOGIN | اجازه ورود به رایانههای کلاینت (شروع نشستها از طرف مشتریان) |
بدون این مجوز، صندوقدار نمیتواند نشستهای کلاینت را شروع یا مدیریت کند.
۲. اعضا (۶ پرچم)
| پرچم | توضیحات |
|---|---|
| VIEW | مشاهده فهرست اعضا و جزئیات عضو |
| ADD | ایجاد حسابهای عضویت جدید |
| DELETE | حذف حسابهای عضویت از سیستم |
| UPDATE | ویرایش اطلاعات اعضای موجود (نام، موجودی و غیره) |
| DISPLAY_EMAIL | مشاهده آدرس ایمیل اعضا در فهرست اعضا |
| DISPLAY_GSM | مشاهده شماره تلفن اعضا در فهرست اعضا |
صندوقداری که فقط VIEW دارد میتواند فهرست اعضا را مرور کند اما نمیتواند عضوی ایجاد، ویرایش یا حذف کند. پرچمهای DISPLAY_EMAIL و DISPLAY_GSM کنترل میکنند آیا اطلاعات تماس حساس قابل مشاهده هستند. این برای رعایت حریم خصوصی مفید است زیرا همه کارکنان نباید به دادههای شخصی دسترسی داشته باشند.
۳. کنسولها (۴ پرچم)
| پرچم | توضیحات |
|---|---|
| VIEW | مشاهده صفحه کنسولها و کارتهای وضعیت کنسول |
| ADD | ثبت کنسولهای بازی جدید در سیستم |
| DELETE | حذف کنسولها از سیستم |
| UPDATE | ویرایش جزئیات کنسول (نام، آدرس MAC، قیمتگذاری) |
۴. گزارشهای سیستم (۴ پرچم)
| پرچم | توضیحات |
|---|---|
| VIEW | دسترسی به صفحه گزارشهای سیستم |
| DISPLAY_FULL | مشاهده کل سابقه گزارش (تمام تاریخها) |
| DISPLAY_TODAY | مشاهده فقط ورودیهای گزارش امروز |
| DELETE | حذف ورودیهای گزارش |
اگر صندوقداری VIEW و DISPLAY_TODAY داشته باشد اما DISPLAY_FULL نداشته باشد، فقط میتواند ورودیهای گزارش روز جاری را ببیند. این برای سرپرستان شیفت مفید است که نیاز به نظارت بر فعالیت فعلی دارند بدون دسترسی به سوابق تاریخی.
۵. گزارشها (۳ پرچم)
| پرچم | توضیحات |
|---|---|
| PAGE_VIEW | دسترسی به صفحه گزارشها/گزارش مالی |
| DISPLAY_FULL | مشاهده کل سابقه گزارش (تمام تاریخها) |
| DISPLAY_TODAY | مشاهده فقط دادههای گزارش امروز |
مشابه گزارشهای سیستم، مجوزهای گزارش به شما امکان میدهند کنترل کنید آیا کارکنان میتوانند سابقه مالی کامل را ببینند یا فقط ارقام روز جاری. صندوقداری با PAGE_VIEW و DISPLAY_TODAY میتواند تراکنشهای شیفت خود را بررسی کند اما به دادههای تاریخی درآمد دسترسی ندارد.
۶. روشهای پرداخت (۴ پرچم)
| پرچم | توضیحات |
|---|---|
| MANAGE | دسترسی به بخش مدیریت روشهای پرداخت |
| ADD | ایجاد روشهای پرداخت جدید (نقدی، کارتی، پرداخت موبایلی و غیره) |
| DELETE | حذف روشهای پرداخت از سیستم |
| UPDATE | ویرایش جزئیات روشهای پرداخت موجود |
خلاصه
| دستهبندی | پرچمها | تعداد |
|---|---|---|
| احراز هویت | CLIENT_LOGIN | ۱ |
| اعضا | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | ۶ |
| کنسولها | VIEW, ADD, DELETE, UPDATE | ۴ |
| گزارشهای سیستم | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | ۴ |
| گزارشها | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | ۳ |
| روشهای پرداخت | MANAGE, ADD, DELETE, UPDATE | ۴ |
| مجموع | ۲۲ |
نحوه عملکرد مجوزها
هر دستهبندی مجوز مجموعهای از پرچمهای مجوز فردی دارد. هر پرچم میتواند بهصورت مستقل با چکباکسها در ویرایشگر نقش فعال یا غیرفعال شود.
رابط کاربری چکباکسهایی برای هر مجوز ارائه میدهد. کافی است مجوزهایی که میخواهید اعطا یا لغو کنید را تیک بزنید یا بردارید. سیستم ذخیرهسازی زیرساختی را بهصورت خودکار مدیریت میکند و نیازی به محاسبه دستی مقادیر نیست.
مثلا در دستهبندی اعضا میتوانید بهصورت مستقل VIEW، ADD، DELETE، UPDATE، DISPLAY_EMAIL و DISPLAY_GSM را فعال یا غیرفعال کنید. صندوقداری که فقط VIEW و UPDATE تیک خورده داشته باشد میتواند اعضا را ببیند و ویرایش کند اما نمیتواند آنها را اضافه یا حذف کند.
ایجاد حساب صندوقدار
- به مدیریت > صندوقداران در برنامه سرور بروید.
- روی دکمه افزودن صندوقدار کلیک کنید.
- نام کاربری صندوقدار را وارد کنید. این نام برای ورود استفاده خواهد شد.
- یک رمز عبور تعیین کنید. رمز عبور قوی انتخاب کنید. این حساب ممکن است به دادههای مالی و اطلاعات مشتریان دسترسی داشته باشد.
- یک نقش از منوی کشویی انتخاب کنید. میتوانید مدیر، پیشفرض یا هر نقش سفارشی که ایجاد کردهاید را انتخاب کنید.
- روی ذخیره کلیک کنید تا حساب ایجاد شود.
صندوقدار جدید اکنون میتواند با اطلاعات ورود خود به سرور HandyCafe وارد شود.
ایجاد نقش سفارشی
- به مدیریت > نقشهای صندوقدار در برنامه سرور بروید.
- روی دکمه افزودن نقش کلیک کنید.
- یک نام نقش وارد کنید (مثلا "سرپرست شیفت"، "صندوقدار تازهکار"، "کارکنان شب").
- سطح نقش را تعیین کنید. سطوح بالاتر نشاندهنده اختیارات بیشتر هستند. این برای ترتیب نمایش و سلسلهمراتب سازمانی استفاده میشود.
- مجوزهای فردی در تمام شش دستهبندی را تیک بزنید یا بردارید. هر چکباکس مطابق با یکی از ۲۲ تنظیم مجوز است.
- روی ذخیره کلیک کنید تا نقش ایجاد شود.
پس از ایجاد، میتوانید این نقش را به هر حساب صندوقدار اختصاص دهید.
اجرای سمت سرور
مجوزها در سمت سرور اعمال میشوند نه فقط در رابط کاربری. حتی اگر کسی رابط کلاینت را دور بزند یا کد فرانتاند را دستکاری کند، سرور هر درخواست را قبل از اجرا بر اساس مجوزهای نقش صندوقدار اعتبارسنجی میکند.
یعنی:
- صندوقداری بدون MEMBER_DELETE نمیتواند عضوی را حذف کند، حتی با ارسال درخواست مستقیم API.
- صندوقداری بدون REPORT_DISPLAY_FULL نمیتواند دادههای تاریخی گزارش را بازیابی کند، صرفنظر از نحوه دسترسی.
- تمام بررسیهای مجوز در بکاند Rust قبل از هر عملیات پایگاه داده انجام میشوند.
امنیت: محدودیت نرخ
برای محافظت در برابر حملات جستجوی فراگیر، HandyCafe محدودیت نرخ ورود را اعمال میکند:
- ۵ تلاش ناموفق ورود در یک بازه ۱۰ دقیقهای قفل خودکار را فعال میکند.
- قفل ۱۵ دقیقه طول میکشد و در این مدت هیچ تلاش ورودی برای آن حساب پذیرفته نمیشود.
- پس از انقضای دوره قفل، صندوقدار میتواند دوباره تلاش کند.
این محدودیت هم برای صفحه ورود سرور و هم برای ورود صندوقدار در رایانههای کلاینت اعمال میشود.
مدیریت شیفت
فعالیت هر صندوقدار در طول شیفتش بهصورت فردی پیگیری میشود:
- تمام تراکنشها (پرداخت نشست، پرداخت سفارش و غیره) با هویت صندوقدار ثبت میشوند.
- صندوق موجودی اولیه و پایانی هر شیفت صندوقدار را بهصورت جداگانه پیگیری میکند.
- گزارشهای شیفت به تفکیک صندوقدار قابل تولید هستند و دقیقا نشان میدهند چه مقدار درآمد در شیفت پردازش کردهاند.
- هنگامی که صندوقدار خارج میشود، شیفت بسته شده و خلاصهای برای بررسی در دسترس است.
این پیگیری به تفکیک صندوقدار پاسخگویی را تضمین میکند و شناسایی مغایرتها در پایان هر شیفت را ساده میسازد.
مثالهای مجوز
سناریو ۱: صندوقدار پایه نیروی جدیدی که فقط نیاز به شروع/پایان نشستها و دریافت پرداخت دارد. یک نقش سفارشی با فقط CLIENT_LOGIN فعال اختصاص دهید. نمیتواند اعضا، گزارشها، گزارشهای سیستم یا کنسولها را مشاهده کند.
سناریو ۲: سرپرست شیفت کارمند مورد اعتمادی که بر سالن نظارت میکند. نقشی با CLIENT_LOGIN، MEMBER_VIEW، MEMBER_UPDATE، CONSOLE_VIEW، REPORT_PAGE_VIEW و REPORT_DISPLAY_TODAY اختصاص دهید. میتواند نشستها را مدیریت کند، اعضا را مشاهده (نه حذف) کند، کنسولها را ببیند و درآمد امروز را بررسی کند اما به گزارشهای تاریخی کامل یا تغییر روشهای پرداخت دسترسی ندارد.
سناریو ۳: مدیر شب مدیری که شیفت شب را بهصورت مستقل اداره میکند. بیشتر مجوزها را بهجز MEMBER_DELETE، LOG_DELETE و PAYMENT_METHOD_DELETE بدهید. میتواند همه چیز را در شیفت مدیریت کند اما نمیتواند دادههای حیاتی را برای همیشه حذف کند.
سناریو ۴: کارکنان با محدودیت حریم خصوصی صندوقداری که نباید اطلاعات تماس مشتریان را ببیند. نقشی با MEMBER_VIEW فعال اما DISPLAY_EMAIL و DISPLAY_GSM غیرفعال ایجاد کنید. میتواند اعضا را بر اساس نام جستجو کند اما اطلاعات تماس شخصی پنهان است.