権限管理パターン
:LiTarget: 用途
ユーザー毎の機能アクセス権を管理するパターン。許可リスト方式。
:LiSparkle: 特徴
- 許可リスト
- 型安全
- デバッグ容易
:LiCode: 実コード(SCALE Base より自動抽出)
:LiInfo:
lib/always-allowed-systems.tsの中身そのもの。コピペ即可。
// 全ユーザーに常時開放するシステム(権限管理に関係なく閲覧可能)。
// layout.tsx のアクセス制御と SystemSidebar.tsx のサイドバー表示の両方で参照する。
// ここに追加するだけで、auth-context の allowedSystems を触らずに全員公開できる。
export const ALWAYS_ALLOWED_SYSTEMS = new Set<string>([
'changelog',
]);
export function isSystemAccessible(systemId: string, userAllowedSystems: string[]): boolean {
return ALWAYS_ALLOWED_SYSTEMS.has(systemId) || userAllowedSystems.includes(systemId);
}
:LiFolder: ソースファイルのパス
/Users/oogushiyuuki/Library/CloudStorage/GoogleDrive-y-ogushi@scale-group.co.jp/マイドライブ/AI/scale-base/lib/always-allowed-systems.ts
:LiHandPointer: 使い方
対象プロジェクトに該当ファイルをコピーして、props を流し込むだけ。
:LiAlertCircle: 注意事項
- 依存パッケージを忘れず追加