コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

ロールベースアクセス制御 (RBAC)

Speakeasy は better-auth の Organization プラグインをベースに、4段階のロールベースアクセス制御を実装しています。


better-auth の admin プラグインが提供するシステムレベルのロールです。

ロール説明対象
adminシステム管理者Penthouse アクセス可
user一般ユーザーCounter のみ

システムロールは user.role フィールドに保存されます。


各組織内で付与されるロールです。member.role フィールドに保存されます。

ロール日本語名説明
ownerオーナー組織の全権限。組織削除・メンバー管理
admin管理者組織設定変更・メンバー管理(オーナー権限除く)
memberメンバーチャット・連絡先・配信の操作
staffスタッフ閲覧中心の限定権限

操作owneradminmemberstaff
組織情報の閲覧oooo
組織情報の更新oo--
組織の削除o---
操作owneradminmemberstaff
メンバー一覧の閲覧oooo
メンバーの招待oo--
メンバーの削除oo--
ロール変更oo--
操作owneradminmemberstaff
チャットルーム一覧oooo
チャットルーム作成oooo
メッセージ送信oooo
メッセージ閲覧oooo
チャットルーム削除ooo-
操作owneradminmemberstaff
連絡先一覧ooo-
連絡先作成ooo-
連絡先更新ooo-
連絡先削除ooo-
操作owneradminmemberstaff
配信一覧oooo
配信作成ooo-
配信編集ooo-
配信削除oo--
配信キャンセルooo-

Door Gateway の permissions.ts で Access Control リストを定義しています。

// リソース定義
const resources = {
organization: ['update', 'delete'],
member: ['create', 'read', 'delete'],
invitation: ['create', 'read', 'cancel'],
chat: ['create', 'read', 'delete'],
contact: ['create', 'read', 'update', 'delete'],
broadcast: ['create', 'read', 'delete']
} as const;
// ロール別権限
const roles = {
owner: {
organization: ['update', 'delete'],
member: ['create', 'read', 'delete'],
chat: ['create', 'read', 'delete'],
contact: ['create', 'read', 'update', 'delete'],
broadcast: ['create', 'read', 'delete']
},
admin: {
organization: ['update'],
member: ['create', 'read', 'delete'],
chat: ['create', 'read', 'delete'],
contact: ['create', 'read', 'update', 'delete'],
broadcast: ['create', 'read', 'delete']
},
member: {
member: ['read'],
chat: ['create', 'read', 'delete'],
contact: ['create', 'read', 'update', 'delete'],
broadcast: ['create', 'read']
},
staff: {
member: ['read'],
chat: ['create', 'read'],
broadcast: ['read']
}
};

組織ごとにカスタムロールを作成できます。

Base RPC: createRole({ organizationId, name, description?, permissions? })
Base RPC: assignRole({ roleId, memberId })

カスタムロールは Vault DB の organizationRole テーブルに保存され、memberRole テーブルでメンバーに割り当てられます。


レイヤーチェック内容
SvelteKit hooksセッション有効性、アクティブ組織
Remote Functionsロールによる機能制限
RPC メソッドCookie からのセッション検証
Proof Servicebetter-auth の AC ミドルウェア