SCALE — Build Lab
開発パターン · TYPESCRIPT LIBRARY

権限管理パターン

CATEGORY開発パターン TYPETypeScript Library EFFORT60〜180分 DIFFICULTY
PRIMARY CODE
ts · 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);
}

前提条件
Tailwind CSS v4TypeScript 5
USE CASES
  • 多機能ダッシュボード

権限管理パターン

: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: 注意事項

  • 依存パッケージを忘れず追加