権限設計のコツ 【DB】
経緯
業務で権限機能の設計をする必要が出てきたので、インプット。
ケース
上記サイトからのインプットで今自分がしたいことを抽出してみる。
①ロールだけパターン
ユーザー:ロール = 1:1
ロール:アビリティ = 1 : n
②admin:boolean パターン
true:false
上記二つを組み合わせる場合、どうすればいいだろうか。
admin最強パターン
admin に true の場合
→ 制御を入れない
権限とは与えられる権利であり、逆に言えば縛りでもある。
admin > role
role != admin というような関係性を用意してはどうだろうか。
そもそもadminとroleを分けたいパターンとは
そもそもこの設計は美しくないのかもしれない。
二重な権限設定。。もっと良いパターンがあれば知りたい。
アプリケーション側
アプリ側の制御がまだわかっていない。
例えば、このアビリティにはこの画面を表示させないという場合。
if user.ability = xxx
show(this.page)
みたいなロジックを書いていくのだろうか。
当初考えてたDB
これならページ側に渡せば、あとはプロパティをセットしてあげるだけで簡単にページを追加できるから画面側に追加の処理が入らないので修正が楽だと思った。
しかし、そもそも画面を追加するのであれば、それなりにプログラムの改修が入るということであり、ここまでしなくてもいいのではないかと思った。
ちょっとやり過ぎだったか。
しかし、アビリティの中を煩雑にするのも好むところではないので。上記、設計を考えていたのだ。