Skip to main content

Enables you to login using your emailaddress.

Project description



What is betahaus.emaillogin?

The use of emailaddress are speading more and more but Plone does not have a convenient way to use a users registered email address to login.

betahaus.emaillogin makes it possible to login using the email address specified in the user profile.

Plone has a very powerful and modifiable authentication system called Pluggable Authentication Service (PAS). As the name suggest the system is pluggable and thus can easily be extended by third-party products such as this.


  • add betahaus.emaillogin entries to eggs and zcml in the appropriate buildout configuration file.

  • re-run buildout.

  • Install via portal_quickinstaller or Site Setup in plone

How it works

betahaus.emaillogin is at installation put first in the list of extraction plugins. If an email address is specified and a corresponding user is found. The email address in the request is replaced with the username and then simulates failed extraction to continue normal login procedure.


The current default implementation does a lookup of the email by iterating over all of the PAS users until the corresponding email is found. This approach is fine for a large number of sites with a liberal number of users. It is however computationally expensive and slow when the number of users rise. If you experience performance issues there is a GenericSetup profile called extended that can be applied. This extension adds a custom email->userid catalog that enables faster userid look-up from email address.

The extended profile is applied via portal_setup -> Import -> select and apply profile Extended performance for EmailLogin Support.

If you want to uninstall this extended profile just remove the email_catalog from the site root and emaillogin will fall back to default lookup implementation.


You can write a custom email lookup method that will be used for translating an email to one or more usernames. The usecase in mind is that a contenttype based member implementation is used and the email is present in a catalog, either portal_catalog or a custom catalog. Two examples of this is betahaus.memberprofile and Products.remember. Then by reusing the already stored catalog data there is no need for another catalog. To implement this you need to register a utility implementing the interface IEmailPluginExtension. Warning: When using contentbased membership implementations Plone by default creates the member contenttype on first login. This can cause a problem on initial login since the information is not available in portal_catalog yet.

Utility example:

from zope.interface import implements
from betahaus.emaillogin.interfaces import IEmailPluginExtension
class Dummy(object):

    def getUserNames(self, context, login_email, get_all = False):
        usernames = context.custom_catalog(email = login_email)
        if usernames and get_all == False:
             return usernames[0].username
        return [x.username for x in usernames]

dummy_extension = Dummy()

Zcml registration example:



Issues can be filed at the issue tracker on the products page at After update to Plone 4 compatibility some bugs might have been introduced. All tests for plone 3 pass, but if you find any bugs don’t hesitate to file it.

Change history

0.6.1 (2012-02-16)

  • Get rid of unused imports - in particular the one that fails on Plone 4.1.4. [ritz]

0.6 (2011-04-11)

  • Fixed a bug with correct formatted non existant email when resetting password, thanks James Whisnant for this. [mlundwall]

  • Added zcml auto slug. [mlundwall]

  • Fixed some import errors that caused exeptions when someone entered an email that doesn’t exist [robinharms]

  • Plone 4 support. [mlundwall]

0.5 (2009-12-28)

  • Fixed a bug when removing a user. [mlundwall]

  • No warning when removing a user with duplicate email. [mlundwall]

  • Possibility of writing custom email to username utility. [mlundwall]

  • LDAP support. Thanks to Tom Switzer for the patch ( [mlundwall]

0.4 (2009-09-17)

  • Added i18n to for some texts that could not be reused from plone. [mlundwall]

  • Fixed the problem with non working forgotten password retrieval via email. Thanks Winn for reporting. [mlundwall]

0.3 (2009-07-27)

  • Added a warning to managers when changing email in the prefs_users_overview to an already existing email. [mlundwall]

  • Added a optional custom email catalog, for better performance with large number of users. [mlundwall]

0.2 (2009-05-22)

  • Fix bug in personalize_form.vpy that prevented editing user profiles. [davisagli]

0.1 (2009-05-11)

  • Added custom personalize_form.vpy to prevent changing an existing user’s e-mail address to one that already exists. [davisagli]

  • Avoid applying the custom import steps when other profiles are applied. [davisagli]

  • Duplicate email warning at install [mlundwall]

  • Check at registration to not allow multiple users with same email [mlundwall]

  • Moved to collective. [mlundwall]

  • Created recipe with ZopeSkel [Robin Harms Oredsson].


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

betahaus.emaillogin-0.6.1.tar.gz (32.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page