2017-02-23 1 views
2

J'ai des utilisateurs enregistrés sur le site et des utilisateurs qui se connectent avec un compte externe (plone.app.ldap est utilisé).Plone 4 - Obtenir le type de l'utilisateur authentifié

Comment puis-je connaître le type d'utilisateur connecté?

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

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

J'ai l'utilisateur connecté, mais je ne sais pas comment trouver comment il est enregistré. (Il semble que membership_tool.listMembers() me donne la liste des utilisateurs enregistrés Peut-être que je peux utiliser ...)

Mon objectif est d'envoyer le type de compte à Google Analytics en tant que dimension personnalisée dans un événement personnalisé et de créer de bons rapports (le type de compte sera un filtre pour les résultats).

Répondre

3

L'objectif du service de PAS est exactement votre problème :-)

Il est appelé service à enficher auth. Cela signifie que vous pouvez enregistrer plusieurs services et le PAS vous donne un point d'entrée unique pour effectuer des manipulations et des requêtes. Cela signifie que vous n'avez généralement pas à vous soucier de savoir si l'utilisateur est un utilisateur plone ou un utilisateur ldap.

AFAIK la seule voie possible est de demander le plugin ldap directement:

ldap: L'ID de votre AD/plugin LDAP

plone: ​​Votre site 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'}] 

Le résultat de la recherche dépend de la configuration de votre annonce/LDAP.

+2

Parfait! Merci. :) 'search = plone.acl_users.get (" ldap-plugin "). Acl_users.searchUsers' dans mon cas. – GhitaB

+0

La réponse de Mathias est correcte mais les utilisateurs de l'IIRC retournés par ce plugin donnent également des informations sur son origine dans les accessoires. Malheureusement ce n'est pas un comportement standard. –

+0

Je ne suis pas au courant de cela. Ce serait évidemment la meilleure solution, puisqu'elle ne nécessite pas une seconde requête possible auprès de l'Idap. – Mathias