Sofra · Rollar və giriş

Роли и доступы

Шесть ролей демо, раздельные входы Staff vs Guest, deep links после логина и пошаговое управление аккаунтами в admin/platform.

Правила авторизации

ПравилоКак работает
Staff только /loginCredentials с audience=staff. Guest email отклоняется.
Guest только /[slug]/loginaudience=guest. Staff через гостевой вход не пускает.
/admin и /platformMiddleware: без 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=.

Сводная матрица

РольEmailВходDeep link
PLATFORM_ADMINadmin@sofra.az/login/platform
OWNERowner@communalco.az/login/admin/communalco
MANAGERmanager@communalco.az/login/admin/communalco
WAITERwaiter@communalco.az/login/admin/communalco/tables
KITCHENkitchen@communalco.az/login/admin/communalco/kitchen
BARTENDERbartender@communalco.az/login/admin/communalco/kitchen
HOSTESShostess@communalco.az/login/admin/communalco/reservations
GUESTguest@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. 1Войти на /login как owner@communalco.az или admin@sofra.az.
  2. 2Открыть /admin/communalco/staff.
  3. 3В блоке «Персонал»: сменить роль в select (OWNER/MANAGER/WAITER/KITCHEN) → сохранить.
  4. 4Деактивировать участника кнопкой active/inactive.
  5. 5Форма «Новый сотрудник»: email, имя, пароль, роль → createRestaurantUser + membership.
  6. 6Гости CRM ниже: список GUEST с заказами/бронями; можно деактивировать.

B. Платформа (только admin@sofra.az)

  1. 1Открыть /platform.
  2. 2Create tenant — новый ресторан + опциональный owner.
  3. 3Сменить subscriptionStatus у тенанта.
  4. 4В списке Users: Role select (включая GUEST и staff), active toggle.
  5. 5Create user на платформе с ролью (не PLATFORM_ADMIN в форме create — фильтр).
  6. 6Кнопка Admin у ресторана = open-admin (открыть админку как PLATFORM_ADMIN, без session swap).

Важно

Гостевую регистрацию делают сами гости на /communalco/register (rate limited). Staff не создаётся с гостевого сайта.