とあるプロジェクトで、ユーザーの権限を画面で管理したい、との要望がありました。 要は何か権限の一覧があって、横にチェックボックスにチェックを入れるか外すかによって権限を管理すると。 画面だけなら簡単ですが、それを実際にルートの保護、表示内容の保護に使うのであれば、もっと深入りする必要があります。 事前準備 ユーザー、役割と権限の関係について 全て話のベースとなるため、先に明示した方が良いかと思います。実際のプロジェクトによって違うと思いますが、今回は以下の関係で実装しました。 まず、ユーザーとロール・役割はone-to-manyの関係となっています。つまり、一つの役割には複数のユーザーを持つ、一人のユーザーは一つの役割しか担わない、との構造です。これは、今回のプロジェクトにおける役割・ロール自身の排他性によってone-to-manyの関係性が決められています。例えば、ユーザーAの役割が管理