メインコンテンツまでスキップ
バージョン: 最新 (develop)

アクター(ユーザーロール)と権限の整理

1. ロール体系

BlackSwan は 2層のロール体系 を持つ。

1.1 ADMIN ロール(管理者)

項目内容
対象タッチポイントAdmin Web(blackswan-admin-web)
認証方法AWS Cognito グループベース認証
認証ガードAdminAuthGuard
判定基準Cognito の Admin グループに所属しているか
主な権限法人の作成・編集・削除、組織の管理
RLSbypassedPrisma() を使用(法人横断アクセス可能)

1.2 GENERAL ロール(一般スタッフ)

項目内容
対象タッチポイントWeb / iPad / iPhone
認証方法JWT トークンベース認証(Cognito)
認証ガードAuthGuard
RLScorporateIdGuardedPrisma() を使用(所属法人のデータのみ)

GENERAL ロール内でさらに StaffRole で細分化される:

StaffRole日本語名説明
DIRECTOR施設長施設全体の管理責任者
MANAGER管理者管理業務の責任者
SUB_MANAGERサブ管理者管理者の補佐
LEADERリーダーチーム・グループのリーダー
STAFF一般スタッフ介護士、看護師等の現場スタッフ

2. 認証フロー

2.1 GENERAL(AuthGuard)の6段階検証

2.2 ADMIN(AdminAuthGuard)の検証


3. データアクセス制御

3.1 RLS(Row Level Security)

すべての主要テーブルに corporationId カラムが存在し、RLS ポリシーで自動フィルタリング:

-- 法人隔離ポリシー
CREATE POLICY "corporation_isolation_policy" ON "Staff"
FOR ALL
USING ("corporationId" = current_setting('app.corporation_id')::uuid);

-- RLS バイパスポリシー(管理者・認証時)
CREATE POLICY "bypass_rls_policy" ON "Staff"
USING (current_setting('app.bypass_rls', TRUE)::text = 'on');
アクセスパターンPrisma メソッド用途
通常アクセスcorporateIdGuardedPrisma()一般スタッフの全データアクセス
RLS バイパスbypassedPrisma()認証時、管理者操作、法人横断処理

3.2 StaffDisplayRangeCondition(表示範囲制御)

一般スタッフが閲覧できる利用者の範囲を制御:

フィルタ条件説明
グループ所属グループの利用者のみ表示
事業所所属事業所の利用者のみ表示
部門所属部門の利用者のみ表示
チーム所属チームの利用者のみ表示

4. アクター別タッチポイント・機能マトリクス

4.1 ADMIN(管理者)

機能Admin Web
法人管理(CRUD)o
組織管理(CRUD)o

4.2 DIRECTOR / MANAGER(施設長・管理者)

機能カテゴリWebiPadiPhone
ケアマネジメント全機能o--
契約管理o--
組織・スタッフ管理o--
LIFE 連携・データ出力o--
事故報告・ヒヤリハットo--
選択肢マスタ・テンプレート管理o--
利用者管理(全操作)o--
記録入力-oo
申し送りooo
サマリーボード-oo

4.3 SUB_MANAGER / LEADER(サブ管理者・リーダー)

機能カテゴリWebiPadiPhone
ケアマネジメントo--
契約管理o--
利用者管理o--
記録入力-oo
申し送りooo
サマリーボード-oo

4.4 STAFF(一般スタッフ)

機能カテゴリWebiPadiPhone
記録入力-oo
申し送り閲覧・作成ooo
サマリーボード閲覧-oo
プロフィール編集o--
マイページ-o-
設定--o

5. スタッフの属性

属性説明複数可
職位(position)施設内での役職o
職務(jobRole)担当業務の種類o
資格(qualifications)保有する資格o
グループ(group)所属グループo
事業所(businessOffice)所属事業所o
部門(department)所属部門o
チーム(team)所属チームo
ステータスACTIVE / INACTIVE / RETIRED-
経験年数介護・医療の経験年数-
入職日・退職日人事情報-