Skip to content

メンバー管理の仕様

主催組織に アカウントを紐づけてロールを割り当てる「メンバー管理」の仕様をまとめます。実装(apps/apimanage/members.ts と管理画面 /manage/members)に基づく現状仕様です。

権限・ロールの基盤は マルチ主催組織 / アカウント体系 を参照してください。本ページはその「メンバー管理」機能に絞った運用仕様です。

1. 基本方針

  • メンバー管理は 「いま操作している主催組織」 に対して行います。組織が違えば別々のメンバー構成になります。
  • 1 アカウントは複数の主催組織に紐づけられ、組織ごとに 1 つのロールを持ちます。
  • 追加は すでに登録済みのアカウントのメールアドレスで紐づけます(招待メールで新規に呼ぶフローは後続)。
  • 操作できるのは その組織の管理者(admin)システム管理者 だけです。

2. ロール

ロールメンバー管理説明
adminその組織の全管理。メンバーの追加・ロール変更・除名ができる
editor不可大会・申込・マスタなどの編集はできるが、メンバー管理はできない
viewer不可閲覧のみ
staff不可現場運営(MVP はアカウントのみ)
システム管理者可(全組織)users.is_system_admin。全主催組織のメンバーを操作できる

ロールとメンバー管理権限の関係

メンバー管理は権限プリセット上 members 機能 = admin のみ edit です。そのため実質「組織の admin」か「システム管理者」だけが操作できます(権限判定)。

3. 操作一覧

操作内容
一覧操作中組織に紐づくメンバー(氏名・メール・ロール)をメール順で表示
追加登録済みアカウントのメールで紐づけ、ロールを割り当て
ロール変更既存メンバーのロールを変更
除名メンバーの紐づけを解除(アカウント自体は消えない)
  • 追加時、すでにそのアカウントが組織のメンバーなら ロール更新として扱います(重複追加にはなりません)。

4. 操作の前提(スコープと権限)

すべての操作で、以下を順に満たす必要があります。1 つでも外れると操作不可。

チェック外れたときの挙動
ログイン済みか401
その組織で members 編集権限を持つか(admin / システム管理者)403
操作対象の主催組織が選ばれているか400(全組織モードでは操作不可。組織を選んでから行う)

全組織モードでは操作できない

システム管理者が「全主催組織モード(特定の組織を選んでいない状態)」のときは、メンバー管理の対象組織が定まらないため操作できません。画面の組織切替で対象組織を選んでから操作します。

5. アカウント追加のルール

  • 入力されたメールは 前後空白を除去し小文字化して照合します。
  • 登録済みアカウントが見つからない場合は追加できません(先に本人がアカウント登録している必要があります)。招待メールで新規登録に誘導するフローは後続で対応します。
  • 割り当てできるロールは admin / editor / viewer / staff のいずれか。

6. 最後の管理者を守る(ロックアウト防止)

組織が「管理者ゼロ」になって誰も管理できなくなる事故を防ぎます。

操作制限
ロール変更(降格)組織の 管理者が 1 人だけのとき、その人を admin 以外に変更できない
除名組織の 管理者が 1 人だけのとき、その管理者を除名できない
追加(既存メンバーのロール上書き)上と同じ。最後の管理者を降格させる形になる場合は不可
  • 制限に当たった操作は 409(最後の管理者は変更/除名できません) を返します。
  • 管理者が 2 人以上いれば、片方を降格・除名できます(必ず 1 人以上の管理者が残ります)。
  • この判定は 同時操作でも安全になるよう、組織の管理者行をロックしたうえで「判定 → 更新」を 1 つのまとまりで行います(同時に最後の 2 人を降格して 0 人になる事故を防止)。

7. テナント分離

  • 操作は常に 操作中の主催組織にスコープされます。
  • 他組織のメンバーは一覧にも出ず、ID を指定しても操作できません(見つからない=404)。
  • システム管理者は対象組織を選べば、その組織のメンバーを操作できます。

8. 画面(/manage/members

  • サイドナビの「メンバー」は その組織の管理者 / システム管理者にだけ表示されます。
  • 追加フォーム(メール+ロール)、メンバー表(行ごとにロール変更・除名)を表示。
  • 全組織モードや権限不足のときは、その旨の案内を表示し操作させません。

9. 今後の予定(受け皿のみ)

  • 招待メールでの新規参加(未登録メール宛に招待を送る)。現状は登録済みアカウントの紐づけのみ。
  • 機能ごとの細かい権限organization_member_features)。現状はロール単位のプリセットで判定。

関連