Reading member records

Introduction

In Plone, there are two loosely coupled member related subsystems

  • Authentication and permission information (acl_users under site root), managed by Pluggable Authentication System (PAS).
  • Member profile information, accessible through portal_membership tool

Getting logged in member

The following view method code will get the username for the logged in user.

Example:

from Products.CMFCore.utils  import getToolByName

def getActiveUser(self):
    """
    """

    mt = getToolByName(self.context, 'portal_membership')
    if mt.isAnonymousUser(): # the user has not logged in
        return None
    else:
        member = mt.getAuthenticatedMember()
        username = member.getUserName()
        return username

or in template:

username context/portal_membership/getAuthenticatedMember/getUserName

Groups

Groups are stored as PloneGroup objects, which is subclass of PloneUser.

Getting available groups

Getting all groups on the site is possible through acl_users and source_groups folder which provide functionality to manipulate Plone groups.

Example to get only ids:

acl_users = site.acl_users
groups = acl.source_groups.getGroupIds() # Iterable of id strings

Example to get full group information:

site = context.portal_url.getPortalObject()
users = site.acl_users
list = users.source_groups.getGroups()

for group in list:
    # group is PloneGroup object
    yield (group.getName(), group.title)

Getting groups for a certain user

Below is an example how to get groups for the logged in user:

(portal.portal_membership.getAuthenticatedMember().has_role('Manager')) or
('Organizzazione' in portal.portal_membership.getAuthenticatedMember().getGroups())

Warning

Deprecation: This method won’t work in Plone 4.

Email login