Sofra · Rollar və giriş
Роли и доступы
Шесть ролей демо, раздельные входы Staff vs Guest, deep links после логина и пошаговое управление аккаунтами в admin/platform.
Правила авторизации
| Правило | Как работает |
|---|---|
| Staff только /login | Credentials с audience=staff. Guest email отклоняется. |
| Guest только /[slug]/login | audience=guest. Staff через гостевой вход не пускает. |
| /admin и /platform | Middleware: без staff-сессии → редирект на /login. Анонимный admin невозможен. |
| /platform | Только PLATFORM_ADMIN; остальные staff → /admin/communalco |
| Пароль демо | Для всех сид-аккаунтов: demo1234 |
После входа (staffHomeForRole)
PLATFORM_ADMIN →
/platform · KITCHEN → /admin/communalco/kitchen · WAITER → /admin/communalco/tables · OWNER/MANAGER → /admin/communalco. Можно переопределить через ?callbackUrl=.Сводная матрица
| Роль | Вход | Deep link | |
|---|---|---|---|
| PLATFORM_ADMIN | admin@sofra.az | /login | /platform |
| OWNER | owner@communalco.az | /login | /admin/communalco |
| MANAGER | manager@communalco.az | /login | /admin/communalco |
| WAITER | waiter@communalco.az | /login | /admin/communalco/tables |
| KITCHEN | kitchen@communalco.az | /login | /admin/communalco/kitchen |
| BARTENDER | bartender@communalco.az | /login | /admin/communalco/kitchen |
| HOSTESS | hostess@communalco.az | /login | /admin/communalco/reservations |
| GUEST | guest@demo.az | /communalco/login | /communalco/account |
Второй ресторан: owner@duman.az → admin /admin/duman, сайт /duman.
Platform admin
Видит все тенанты Sofra. Email admin@sofra.az.
- Список ресторанов: slug, city, staff/tables count,
subscriptionStatus(demo/trial/active…) - Create tenant: name, slug, city, optional owner email
- Пользователи платформы: смена Role, active/inactive, create user
- Audit log последних действий
- «Impersonate» в UI = кнопка Admin → открыть
/admin/[slug]той же PLATFORM_ADMIN сессией (не отдельный session swap) - Доступ ко всем разделам любого ресторана через admin nav
Owner
Владелец тенанта Communalco. Email owner@communalco.az → /admin/communalco.
- Полный nav: dashboard, orders, kitchen, reservations, menu, tables, floor, content, analytics, staff
- Полный CRUD меню (категории, блюда, цены, фото, аллергены) + sold out — вместе с PLATFORM_ADMIN
- Единственный (вместе с platform) доступ к
/admin/[slug]/staff— создание персонала и CRM гостей - Не видит /platform (middleware отправит на admin)
Manager
Email manager@communalco.az. День ресторана без управления аккаунтами.
- Видит: overview, orders, kitchen, reservations, menu, tables, floor, content, analytics
- Не видит пункт Staff (нет в nav для MANAGER)
- Меню: только sold out / вкл-выкл наличия (без create/edit/delete категорий и блюд)
- CMS about/hours/policy, QR print, waitlist
Waiter
Email waiter@communalco.az → deep link /admin/communalco/tables.
- Nav: overview, orders, reservations, tables, floor
- Нет: kitchen, menu, content, analytics, staff
- Live статусы столов, заказы, ack вызовов официанта, карта зала
Kitchen
Email kitchen@communalco.az → /admin/communalco/kitchen.
- В nav только Kitchen (KDS)
- Колонки статусов тикетов, LiveRefresh polling, время с момента заказа
- Не управляет меню, столами, бронями
Guest
Email guest@demo.az. Вход только /communalco/login.
- Кабинет
/communalco/account: недавние заказы (привязка TableSession), брони, избранное - Меню / бронь / заказ на стол работают и без аккаунта
- Избранное блюд — только залогиненный GUEST
- Staff-сессия на /communalco/account показывает «это зона гостя»
Создание и смена ролей (без кода)
A. Персонал ресторана (Owner / Platform)
- 1Войти на /login как owner@communalco.az или admin@sofra.az.
- 2Открыть /admin/communalco/staff.
- 3В блоке «Персонал»: сменить роль в select (OWNER/MANAGER/WAITER/KITCHEN) → сохранить.
- 4Деактивировать участника кнопкой active/inactive.
- 5Форма «Новый сотрудник»: email, имя, пароль, роль → createRestaurantUser + membership.
- 6Гости CRM ниже: список GUEST с заказами/бронями; можно деактивировать.
B. Платформа (только admin@sofra.az)
- 1Открыть /platform.
- 2Create tenant — новый ресторан + опциональный owner.
- 3Сменить subscriptionStatus у тенанта.
- 4В списке Users: Role select (включая GUEST и staff), active toggle.
- 5Create user на платформе с ролью (не PLATFORM_ADMIN в форме create — фильтр).
- 6Кнопка Admin у ресторана = open-admin (открыть админку как PLATFORM_ADMIN, без session swap).
Важно
Гостевую регистрацию делают сами гости на
/communalco/register (rate limited). Staff не создаётся с гостевого сайта.