2017-02-23 11 views
2

私は、Webサイトに登録されたユーザーと、外部アカウント(plone.app.ldapが使用されています)を使用してログインしているユーザーを持っています。Plone 4 - 認証されたユーザーの種類を取得する

ログインしたユーザーの種類を取得するにはどうすればよいですか?

membership = getToolByName(self.context, 'portal_membership') 
authenticated_user = membership.getAuthenticatedMember() 

(Pdb) authenticated_user 
<MemberData at /mywebsite/portal_memberdata/myuserid used for /mywebsite/acl_users> 

私はログインしたユーザーですが、どのように登録されているかを知る方法はありません。 (membership_tool.listMembers()は私に登録ユーザーのリストを提供しているようですね)

私の目標は、カスタムイベントのカスタムディメンションとしてアカウントのタイプをGoogleアナリティクスに送信し、素晴らしいレポートを作成することですアカウントのタイプは結果のフィルタになります)。

答えて

3

PASサービスの目標は、まさにそれは、プラグイン可能な認証サービスと呼ばれています

:-)あなたの問題です。これは、複数のサービスを登録できることを意味し、PASは操作とクエリを実行するための単一のエントリポイントを提供します。 これは、通常、ユーザーがploneユーザーかldapユーザーかを気にする必要がないことを意味します。唯一可能な方法私の知る限り

は直接プラグインLDAPを依頼することです:

LDAP:あなたのAD/LDAPプラグインのID

のPlone:Ploneサイト

>>> membership = getToolByName(plone, 'portal_membership') 
>>> authenticated_user = membership.getAuthenticatedMember() 

>>> plone.acl_users.ldap.acl_users.searchUsers 
<bound method LDAPUserFolder.searchUsers of <LDAPUserFolder at /fd/acl_users/ldap/acl_users>> 

>>> search(uid=authenticated_user.getId()) 
[{'dn': 'cn=Test USER,ou=Users, ...', 'uid': 'test.user', 'sn': 'Test', 'mail': '[email protected]', 'givenName': 'USER', 'cn': 'Test User'}] 

検索結果あなたの広告/ ldap構成に依存します。

+2

パーフェクト!ありがとう。 :) '私の場合、検索= plone.acl_users.get(" ldap-plugin ").acl_users.searchUsers'。 – GhitaB

+0

マティアスの答えは正しいですが、このプラグインから返されたIIRCユーザーは、その小道のどこかでその情報源についての情報も提供しています。 不運にも、これは標準的な動作ではありません。 –

+0

私はそれを認識していません。これは明らかに、より良いものになるでしょう。なぜなら、ldapへの2番目の可能な要求は必要ないからです。 – Mathias

関連する問題