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でラップしているみたいです。