membrane
ちょっとコードを読んだのでメモ
インタフェース
- IMembraneUserRoles
- IUserRelated と PASのIRolesPluginを継承
- 実装クラスはRolesとGroupAwareRoles
- IMembraneUserGroups
- IUserRelated と PASのIGroupsPluginを継承
- 実装クラスはGroupsとSelectedGroups。どう使い分けるのかよく分かりません。
セットアップ
setuphandlerで、acl_users(PAS)の下に、次のプラグインを登録しています。
- membrane_users(MembraneUserManager)
- membrane_groups(MembraneGroupManager)
- membrane_roles(MembraneRoleManager)
- membrane_toolにカタログされたオブジェクトを、exact_getUserIdインデックスで取出し、IMembraneUserRolesでアダプトして、ロールを取出しています。exact_getUserIdインデックスには、セキュリティプリンシパルのgetUserId()の値が格納されています。
- membrane_properties(MembranePropertyManager)
- membrane_user_factory(MembraneUserFactory)
ImplicitAcquirerWrapper
membrane/rememberのどこを探しても、IUserRolesインタフェースのgetRolesの実装が見当たりません。samplememberのコメントには、getRolesは自動生成されると書いてあります。実際に動かして調べてみると、どこかでImplicitAcquirerWrapperでラップしているみたいです。