権限(6段階ロール)の基礎
TablePOS はマルチテナント SaaS として、6 段階のロールベースアクセス制御(RBAC)を採用しています。
ロールはスタッフごとに 1 つだけ設定され、データベース側でも下記 6 種類しか登録できないよう制約がかかっています。
ロール一覧
| ロール(コード) | 表示名 | スコープ | 主な役割 |
|---|---|---|---|
sa_admin | SA管理者 | 全社横断(運営者) | TablePOS 運営側。全機能 |
sa_staff | SAスタッフ | 全社横断(運営者) | 運営側の閲覧担当。売上の閲覧が中心 |
company_admin | 会社管理者 | 自社(全店舗) | 店舗の作成・スタッフ管理・全店舗の売上 |
company_staff | 会社スタッフ | 自社(全店舗) | 全店舗の売上閲覧・レポート出力 |
store_admin | 店長 | 自店舗 | 自店舗の設定・商品・スタッフ・売上・POS |
store_staff | 店舗スタッフ | 自店舗 | POSレジ・ハンディの操作 |
⚠️
「オーナー」「アルバイト」「閲覧専用」といったロールは存在しません。
店舗側は 店長(store_admin) と スタッフ(store_staff) の 2 種類だけです。
ロール別のできること
apps/web/lib/permissions.ts の定義に対応しています。
| できること | SA管理者 | SAスタッフ | 会社管理者 | 会社スタッフ | 店長 | 店舗スタッフ |
|---|---|---|---|---|---|---|
| 会社の作成・編集 | ✅ | - | - | - | - | - |
| 店舗の作成・編集 | ✅ | - | ✅ | - | - | - |
| スタッフ管理 | ✅ | - | ✅ | - | ✅ | - |
| 商品・カテゴリ・テーブル管理 | ✅ | - | ✅ | - | ✅ | - |
| 店舗設定 | ✅ | - | ✅ | - | ✅ | - |
| 注文の作成・編集 | ✅ | - | - | - | ✅ | ✅ |
| 注文の取消 | ✅ | - | - | - | ✅ | - |
| 会計処理 | ✅ | - | - | - | ✅ | ✅ |
| 値引きの適用 | ✅ | - | - | - | ✅ | - |
| 自店舗の売上閲覧 | ✅ | ✅ | ✅ | ✅ | ✅ | - |
| 全店舗の売上閲覧 | ✅ | ✅ | ✅ | ✅ | - | - |
| レポート出力 | ✅ | - | ✅ | ✅ | ✅ | - |
| POSレジ・ハンディ操作 | ✅ | - | - | - | ✅ | ✅ |
ロール別アクセス可能ページ
ページ単位の出し分けはミドルウェア(apps/web/lib/supabase/middleware.ts)で行っています。
| ページ | SA | 会社管理者 / 会社スタッフ | 店長 | 店舗スタッフ |
|---|---|---|---|---|
SA管理画面(/admin/super/*) | ✅ | - | - | - |
会社管理画面(/admin/company/*) | ✅ | ✅ (自社のみ) | - | - |
店舗管理画面(/admin/store/*) | ✅ | ✅ (自社の店舗) | ✅ (自店舗) | - |
POSレジ(/pos/*) | ✅ | ✅ | ✅ (自店舗) | ✅ (自店舗) |
⚠️
店舗スタッフ(store_staff)は管理画面に一切入れません。
/admin/* を開くと自店舗の POSレジへ戻されます(2026-08-05 変更)。
商品登録・プリンター設定・売上確認は店長以上に依頼してください。
他社・他店舗の ID を URL に直接指定した場合も、自分のスコープのページへ戻されます。
ロールの変更
- 会社全体のスタッフ: 会社管理 > スタッフ一覧
- 店舗のスタッフ: 店舗管理 > スタッフ管理
ロールはリクエストのたびにデータベースから参照されるため、変更内容は次回アクセス時から反映されます。
関連ページ
- 権限と操作範囲 — 運用面での注意点
- スタッフ管理(店舗)