私はCatalystを使用してCatalyst::Plugin::Authentication
おり
Catalyst::Plugin::Authorization::Roles
、モデルに属性を追加するためのより良い方法があるかどうか疑問に思っています。
各ユーザーは 1 つまたは複数の会社にアクセスできますが、一度に 1 つのプライマリ (現在の) 会社が常に存在します。許可リストはデータベースに保存され、データベースへのアクセスは主に を通じて行われDBIC
ます。
私の最初の傾向は、現在の会社を持っているのはユーザーであり、したがってそれをユーザーモデルの一部として置くことです: ユーザーパッケージに " sub company { … }
" を与えて、ユーザーの現在の会社を取得/設定します。データベースのチェックはかなり簡単です。$self->search_related
" " (ユーザー モデルによって継承される DBIC メソッド) を使用するだけです。
私が遭遇する問題は次のとおりです。
- 現在の会社はリクエスト間で保持する必要がありますが、データベースには保存したくありません (このセッションの間のみ保持する必要があります)。自然な場所はセッションです…</li>
- データベース内のリストを無視して、任意の
root
会社として行動できる、 Unix の に似た役割があります。この役割の確認はデータベースを介して行うことができますが、アプリ内の他のすべての場所で 友人が使用されています。$c->assert_user_role
モデルを可能な限り Catalyst に依存しないようにするのが最善であると聞いています。モデルが を操作するのもかなり奇妙に思え
$c->session
ます。
もちろん、これらのチェックをコントローラーに移動して、コントローラーが送信するものをモデルに受け入れるようにすることもできますが、それは DRY にかなり違反しており、チェックの 1 つをどこかに忘れるとセキュリティ上の問題が発生するだけです。
助言がありますか?それとも肩をすくめて先に進み、モデルでそれを行いますか?
ありがとうございます。いいタイトルが思いつかなくてすみません。