Personal tools
You are here: Home Documentation Tutorials Common Plone programming recipes Users
Support

Get Help

Join our chat rooms or support forums if you have more specific questions.

Plone Training
Learn how to design, build, and deploy a website in Plone through one of the numerous Plone training sessions around the world.
Find Plone training…
 
Document Actions

Users

Getting logged in user, manipulating user database

Mikko Ohtamaa

Basics of accessing and modifying objects programmatically using Python, Plone's programming language.
Page 9 of 21.

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)
 
by Mikko Ohtamaa last modified April 22, 2007 - 22:18
Contributors: Mikko Ohtamaa
All content is copyright Plone Foundation and the individual contributors.

get email

Posted by Per Erik Strandberg at March 25, 2008 - 09:35
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

For any issues with the web site functionality, please file a ticket.

Please consult the policy on plone.org content if you want your content published on this site.

Servers and hosting by