Users

Getting logged in user, manipulating user database

Getting logged in user

Getting the current logged in user and his/her username

from Products.CMFCore.utils import getToolByName

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

Delete users

Plone 2.5 way:

        try:
self.portal.acl_users.source_users.doDeleteUser("hr")
except KeyError:
# User does not exist
pass

Get member fullname


        mt = getToolByName(self, 'portal_membership')
member = mt.getAuthenticatedMember()
fullname" : member.getProperty('fullname')

Get member email address

        mt = getToolByName(self, 'portal_membership')
member = mt.getAuthenticatedMember()
fullname" : member.getProperty('fullname')

Manipulating user database

Manipulating users depends a bit what kind of user backend you have
  • Zope internal user database
  • CMFMember or other product which presents users as site content
  • External user database through PlonePAS (e.g. LDAP Windows user accounts)
Plain Plone example:
    def createMember(self, id, pw, email, roles=('Member',)):
pr = self.portal.portal_registration
member = pr.addMember(id, pw, roles, properties={ 'username': id, 'email' : email })
return member
CMFMember example:
    def createREAgent(self, id):
md = self.portal.portal_memberdata
tmp_id = id + '_tmp_id'
md.invokeFactory(type_name='REAgent', id=tmp_id)
return md._getOb(tmp_id)

Setting a member property on all members

This example shows how to change the editor for all users.

Below code is used from an external method, it was placed as 'switchToKupu.py' inside a product's 'Extensions/' directory. This was used to move users from Epoz to Kupu:

def switchToKupu(self):
out = []
# Collect members
pm = self.portal_membership
for memberId in pm.listMemberIds():
member = pm.getMemberById(memberId)
editor = member.getProperty('wysiwyg_editor', None)
if editor == 'Kupu':
out.append('%s: Kupu already selected, leaving alone' % memberId)
else:
member.setMemberProperties({'wysiwyg_editor': 'Kupu'})
out.append('%s: Kupu has been set' % memberId)
return "\n".join(out)
 

get email

Posted by Per Erik Strandberg at Mar 25, 2008 09:35 AM
I think you made a copy paste error above. To get the email - this works for me:

        mt = getToolByName(self, 'portal_membership')
        if mt.isAnonymousUser():
            return ''
        else:
            member = mt.getAuthenticatedMember()
            return member.getProperty('email')

Thanks for getting me started!

/Per