作成日:2024-11-20, 更新日:2024-11-20
テーブル構成案
CRUDだけで良いと思ってたけど、将来的なコトを考えると色々と必要っぽい
- 基本的な権限の設定
- ステータスの権限設定 - 何のステータスに変更することが可能か?
- フィールドの権限設定 - 対象モジュール(ページ)の中で特定のフィールドに対する権限
基本的な権限の設定
- モジュール名
- ユーザーグループ
- CRUDの各権限
- I/O(input/output)の各権限: importとexportの対応
- ステータスの変更権限: 真偽値
例)テーブルのカラム名
- module
- usergroup
- permission_crud - bit演算。C=1,R=2,U=4,D=8
- permission_io - bit演算。import=1,export=2
- flg_change_status - 可=1,不可=0
SQLサンプル
permission_crud、permission_ioの各権限で真偽値表示
select module, usergroup, CASE WHEN (permission_crud & 1) > 0 THEN 1 ELSE 0 END AS is_create, CASE WHEN (permission_crud & 2) > 0 THEN 1 ELSE 0 END AS is_read, CASE WHEN (permission_crud & 4) > 0 THEN 1 ELSE 0 END AS is_update, CASE WHEN (permission_crud & 8) > 0 THEN 1 ELSE 0 END AS is_delete, CASE WHEN (permission_io & 1) > 0 THEN 1 ELSE 0 END AS is_import, CASE WHEN (permission_io & 2) > 0 THEN 1 ELSE 0 END AS is_export, flg_change_status from xxxx
ステータスの権限設定
ステータスの詳細を設定したくなったらテーブル追加が良さげ...
- モジュール名
- ステータス名: 承認、公開、下書き...など
- ユーザーグループ
- 有効・無効: 真偽値
例)テーブルのカラム名
- module
- status_name
- usergroup
- is_allowed - 可=1,不可=0
フィールドの権限設定(編集権限の設定?)
フィールド単位で設定したくなったテーブル追加が良さげ...
→実際に必要になったときにCRUDでいくのか、CRUDのU限定でいくのか検討
- モジュール名
- フィールド名
- ユーザーグループ
- CRUDの各権限 - 作成(c)、削除(d)を使うことは無いと思うけど…一応
例)テーブルのカラム名
- module
- field_name
- usergroup
- permission_crud - bit演算。C=1,R=2,U=4,D=8