Skip to main content

Dexterity content and behaviors to integrate with membrane.

Project description

Introduction

dexterity.membrane enables dexterity content items to be used as users and groups in Plone sites and integrates with Products.membrane.

https://travis-ci.org/collective/dexterity.membrane.png

Compatibility

This package has been tested and developed for Plone 4.2+ In fact it will only work on that version (or higher) as we require uuid support.

We depend on Products.membrane 2.0.2 or higher as that contains a fix to make sure members that are deleted are also removed from the membrane_tool catalog.

User id

As user id we use the uuid that is generated for the content item. This only works on Plone 4.1 and higher. See the definition of getUserId in the user.py behavior.

If you define your own member content type, you should enable the plone.app.referenceablebehavior.referenceable.IReferenceable behavior on it as that gives uuid support. This also means members can be referenced from Archetypes content.

Email as login name

This package contains a member content type that has an email field. This is used as login name by the behavior. See getUserName. Other implementations are possible, so we do not force you to use the email address as the login name in your site.

By default, this is on, but you can switch it off in our control panel. The setting is saved in the Plone registry.

Aside from this, it is probably a good idea to also switch on the use_email_as_login property of Plone itself. The only effect this has as far as this package is concerned, is that some text in login forms is changed: you see email address as label instead of login name, mostly. To enable this, you can put this in propertiestool.xml, possibly in a custom package for your project:

<?xml version="1.0"?>
<object name="portal_properties" meta_type="Plone Properties Tool">
  <object name="site_properties" meta_type="Plone Property Sheet">
    <property name="use_email_as_login" type="boolean">True</property>
  </object>
</object>

Member content type

This package defines a member content type, but this may be considered an example; feel free to create a different type and only use the behaviors or create your own adaptations of them.

Behaviors

dexterity.membrane.behavior.user.IMembraneUser

this makes the content behave as a membrane user, defining a way to get the user id (getUserId) and login name (getUserName).

dexterity.membrane.behavior.password.IProvidePasswords

adds a password and confirmation field to your dexterity content. This is used during authentication.

dexterity.membrane.behavior.group.IMembraneGroup

this makes the content behave as a membrane group, defining a way to get the group id (getGroupId) and group name (getGroupName).

Membrane implementation

Products.membrane.interfaces.IMembraneUserAuth

we implement authentication using the email field and the password field.

Products.membrane.interfaces import IMembraneUserProperties

we provide a read-only mapping from the first and last name fields of our own IMember schema to the fullname user property. We have a read-write mapping for the email, home_page/homepage and description/bio properties/fields for IMember.

Local roles

This package defines a local role provider. It makes sure a logged in user gets the local Reader, Editor and Creator roles on the membrane object that belongs to that user.

Workflow

We define a simple workflow with pending/approved states. A user can only login when in the approved state.

Encryption

As of 1.1.0b3, dexterity.membrane uses bcrypt to encrypt new passwords. This change maintains support for existing SSHA passwords.

Changelog

1.1.0 (2015-10-07)

  • Switch to bcrypt encryption for passwords (includes backwards-compatibility with existing SSHA passwords) [mgrbyte]

1.1.0b2 (2015-03-03)

  • added BBB class for IMembraneGroup, IProvidePasswordsSchema and IMembraneUser [agitator]

1.1.0b1 (2015-03-02)

  • fix release

1.1.0b0 (2015-03-02)

  • support special characters/umlauts in passwords [agitator]

  • renaming with bbb imports: remove last membrane from all dexterity.membrane.behavior.membrane*. [jensens]

  • fix: make PasswordProvider work. The whole was inactive and broken after activation. [jensens]

  • Get rid of deprecated plone.directives and use plone core functionality to achieve same goals. Also minor modernization of buildout. [jensens]

  • Declare plone.directives.form dependency. [vincentfretin]

1.0 (2014-10-16)

  • add a hook using a utility to add a password checker in own customization code. we may want to provide an default, but yet not sure how it should look like. [jensens]

  • make it easier to inherit passowrd for own behavior [jensens]

  • Remove grok dependency, refactor a bit to reduce complexity in one module. Attention: password related behaviour is now in own module. Needs update of customizations/own code after upgrade. [jensens]

  • Cleanup, pep8, plone-code-style, make tests fly again. [jensens]

  • Make get_full_name a method of MembraneUser so it can be easily customized. [cedricmessiant, vincentfretin]

  • Add French translations. [cedricmessiant]

0.4 (2013-07-18)

  • Add upgrade step to update the behavior profile. If you have installed the example content profile, you will see a warning in the Add-ons control panel that Plone does not know how to update this profile. We recommend that you deactivate it and then activate it again. Issue #7 [maurits]

  • Rename content profile to example and rename behavior profile to default. Issue #7. [maurits]

  • Add Spanish and Brazilian Portuguese translations. [hvelarde]

0.3 (2013-05-15)

  • Fix installation problems when OS does not support symbolic links. Renamed README.txt to README.rst and updated setup.py to point to that file. This fixes #5. [saily]

  • Fix getattr in getPropertiesForUser to have a default value. [datakurre]

0.2 (2013-02-19)

  • Keep constistent with plone’s email login #12187, so don’t lowercase email addresses. [saily]

  • Add basic membrane group behavior [saily]

0.1 (2012-09-20)

  • Initial alpha release

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

dexterity.membrane-1.1.0.tar.gz (35.2 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