キャッシャーロールと権限
HandyCafeではロールベースアクセス制御(RBAC)を使用して、各スタッフがシステム内で表示・操作できる範囲を管理します。すべてのキャッシャーにはロールが割り当てられ、そのロールによってアプリケーション全体の正確な権限が決定されます。
ロールの種類
HandyCafeには3種類のロールがあります。
管理者
管理者ロールは、システム内のすべての機能への無制限アクセスを付与します。管理者はキャッシャーの管理、すべてのレポートの閲覧、設定の変更、あらゆる操作を実行できます。このロールはカフェオーナーや上級マネージャー向けです。
システムには常に少なくとも1つの管理者アカウントが存在します。管理者ロールは削除や権限の縮小ができません。
デフォルト
デフォルトロールには特別な権限が割り当てられていません。デフォルトロールのキャッシャーはログインして基本操作を実行できますが、メンバー管理、レポート、コンソール設定などの制限エリアにはアクセスできません。基本的なタスクのみを担当する新入社員の初期設定として使用してください。
カスタム
カスタムロールでは、キャッシャーに付与する権限を正確に定義できます。名前を設定し、レベルを指定して、6つのカテゴリにわたる個別の権限フラグをオンまたはオフにします。これにより、各スタッフのアクセス範囲をきめ細かく制御できます。
権限カテゴリ
HandyCafeには6つのカテゴリに分類された22個の権限フラグがあります。各フラグはシステム内の特定のアクションまたはビューを制御します。
1. 認証(1フラグ)
| フラグ | 説明 |
|---|---|
| CLIENT_LOGIN | キャッシャーがクライアントPCにログイン(顧客の代わりにセッションを開始)することを許可 |
この権限がないと、キャッシャーはクライアントセッションを開始・管理できません。
2. メンバー(6フラグ)
| フラグ | 説明 |
|---|---|
| VIEW | メンバーリストとメンバー詳細の表示 |
| ADD | 新しいメンバーアカウントの作成 |
| DELETE | メンバーアカウントのシステムからの削除 |
| UPDATE | 既存のメンバー情報(名前、残高など)の編集 |
| DISPLAY_EMAIL | メンバーリストでメンバーのメールアドレスを表示 |
| DISPLAY_GSM | メンバーリストでメンバーの電話番号を表示 |
VIEWのみを持つキャッシャーはメンバーリストを閲覧できますが、メンバーの作成、編集、削除はできません。DISPLAY_EMAILとDISPLAY_GSMフラグは、機密性の高い連絡先情報の表示を制御します。すべてのスタッフが個人データを閲覧すべきでないプライバシーコンプライアンスに有用です。
3. コンソール(4フラグ)
| フラグ | 説明 |
|---|---|
| VIEW | コンソールページとコンソールステータスカードの表示 |
| ADD | 新しいゲーミングコンソールのシステムへの登録 |
| DELETE | コンソールのシステムからの削除 |
| UPDATE | コンソール詳細(名前、MACアドレス、料金設定)の編集 |
4. ログ(4フラグ)
| フラグ | 説明 |
|---|---|
| VIEW | ログページへのアクセス |
| DISPLAY_FULL | 完全なログ履歴(全日付)の表示 |
| DISPLAY_TODAY | 今日のログエントリのみ表示 |
| DELETE | ログエントリの削除 |
VIEWとDISPLAY_TODAYを持ちDISPLAY_FULLを持たないキャッシャーは、当日のログエントリのみを表示できます。これは履歴記録にアクセスせずに現在の活動を監視する必要があるシフトスーパーバイザーに便利です。
5. レポート(3フラグ)
| フラグ | 説明 |
|---|---|
| PAGE_VIEW | レポート/キャッシュレポートページへのアクセス |
| DISPLAY_FULL | 完全なレポート履歴(全日付)の表示 |
| DISPLAY_TODAY | 今日のレポートデータのみ表示 |
ログと同様に、レポート権限ではスタッフが完全な財務履歴を表示できるか、当日のデータのみに制限するかを制御できます。PAGE_VIEWとDISPLAY_TODAYを持つキャッシャーは自分のシフトの取引を確認できますが、履歴の売上データにはアクセスできません。
6. 支払い方法(4フラグ)
| フラグ | 説明 |
|---|---|
| MANAGE | 支払い方法の管理エリアへのアクセス |
| ADD | 新しい支払い方法(現金、カード、モバイル決済など)の作成 |
| DELETE | 支払い方法のシステムからの削除 |
| UPDATE | 既存の支払い方法の詳細編集 |
サマリー
| カテゴリ | フラグ | 合計 |
|---|---|---|
| 認証 | CLIENT_LOGIN | 1 |
| メンバー | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| コンソール | VIEW, ADD, DELETE, UPDATE | 4 |
| ログ | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | 4 |
| レポート | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| 支払い方法 | MANAGE, ADD, DELETE, UPDATE | 4 |
| 合計 | 22 |
権限の仕組み
各権限カテゴリには個別の権限フラグのセットがあります。各フラグはロールエディターのチェックボックスで個別に有効化または無効化できます。
UIでは各権限にチェックボックスが表示されます。付与または取り消したい権限をチェックまたはアンチェックするだけです。システムが内部のストレージを自動的に処理するため、値を手動で計算する必要はありません。
たとえば、メンバーカテゴリでは、VIEW、ADD、DELETE、UPDATE、DISPLAY_EMAIL、DISPLAY_GSMを個別に有効化または無効化できます。VIEWとUPDATEのみをチェックしたキャッシャーは、メンバーの表示と編集はできますが、追加や削除はできません。
キャッシャーアカウントの作成
- サーバーアプリケーションでマネジメント > キャッシャーに移動します。
- キャッシャー追加ボタンをクリックします。
- キャッシャーのユーザー名を入力します。これがログインに使用されます。
- パスワードを設定します。このアカウントは財務データや顧客情報にアクセスする可能性があるため、強力なパスワードを選択してください。
- ドロップダウンからロールを選択します。管理者、デフォルト、または作成済みのカスタムロールから選べます。
- 保存をクリックしてアカウントを作成します。
新しいキャッシャーは資格情報を使用してHandyCafeサーバーにログインできるようになります。
カスタムロールの作成
- サーバーアプリケーションでマネジメント > キャッシャーロールに移動します。
- ロール追加ボタンをクリックします。
- ロール名を入力します(例: 「シフトスーパーバイザー」「ジュニアキャッシャー」「夜勤スタッフ」)。
- ロールレベルを設定します。高いレベルほど権限が強いことを示します。これは表示順序と組織階層に使用されます。
- 6つのカテゴリすべてにわたる個別の権限をチェックまたはアンチェックします。各チェックボックスは22の権限設定の1つに対応しています。
- 保存をクリックしてロールを作成します。
作成後、このロールを任意のキャッシャーアカウントに割り当てることができます。
バックエンドでの権限適用
権限はUIで非表示にするだけでなく、サーバー側で厳密に適用されます。クライアントインターフェースをバイパスしたりフロントエンドコードを操作したりしても、サーバーはリクエストの実行前にキャッシャーのロール権限を検証します。
つまり以下を意味します。
- MEMBER_DELETEを持たないキャッシャーは、直接APIリクエストを送信してもメンバーを削除できません。
- REPORT_DISPLAY_FULLを持たないキャッシャーは、アクセス方法に関係なく履歴レポートデータを取得できません。
- すべての権限チェックはデータベース操作の実行前にRustバックエンドで行われます。
セキュリティ: レート制限
ブルートフォース攻撃から保護するため、HandyCafeではログインのレート制限を適用しています。
- 10分以内に5回のログイン失敗で自動ロックアウトが発生します。
- ロックアウトは15分間継続し、その間そのアカウントへのログイン試行はすべて拒否されます。
- ロックアウト期間が終了すると、キャッシャーは再度試行できます。
これはサーバーのログイン画面とクライアントPC上のキャッシャーログインの両方に適用されます。
シフト管理
各キャッシャーの活動はシフトを通じて個別に追跡されます。
- すべての取引(セッション支払い、注文支払いなど)はキャッシャーのIDとともに記録されます。
- キャッシュレジスターは各キャッシャーのシフトの開始残高と終了残高を個別に追跡します。
- キャッシャーごとのシフトレポートを生成でき、シフト中に処理した売上を正確に確認できます。
- キャッシャーがログアウトすると、シフトが終了し、確認用のサマリーが表示されます。
キャッシャー単位の追跡により説明責任が確保され、各シフト終了時の不一致を容易に特定できます。
権限の設定例
シナリオ1: ベーシックキャッシャー セッションの開始/停止と支払い処理のみが必要な新入社員。CLIENT_LOGINのみを有効にしたカスタムロールを割り当てます。メンバー、レポート、ログ、コンソールは閲覧できません。
シナリオ2: シフトスーパーバイザー フロアを監督する信頼できる従業員。CLIENT_LOGIN、MEMBER_VIEW、MEMBER_UPDATE、CONSOLE_VIEW、REPORT_PAGE_VIEW、REPORT_DISPLAY_TODAYを持つロールを割り当てます。セッション管理、メンバーの表示(削除不可)、コンソールの確認、当日の売上チェックは可能ですが、完全な履歴レポートへのアクセスや支払い方法の変更はできません。
シナリオ3: 夜勤マネージャー 夜間シフトを独立して担当するマネージャー。MEMBER_DELETE、LOG_DELETE、PAYMENT_METHOD_DELETE以外のほとんどの権限を付与します。シフト中はすべてを管理できますが、重要なデータの永久削除はできません。
シナリオ4: プライバシー制限付きスタッフ 顧客の連絡先詳細を閲覧すべきでないキャッシャー。MEMBER_VIEWを有効にしてDISPLAY_EMAILとDISPLAY_GSMを無効にしたロールを作成します。名前でメンバーを検索できますが、個人の連絡先情報は非表示になります。