src/pyams_security/plugin/userfolder.py
changeset 42 07229ac2497b
parent 25 31ad4c01e99e
child 72 6dd8bc7bb7b5
equal deleted inserted replaced
41:905e30f5467b 42:07229ac2497b
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 from zope.component.interfaces import ISite
       
    13 from pyams_utils.traversing import get_parent
       
    14 
    12 
    15 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    16 
    14 
    17 
    15 
    18 # import standard library
    16 # import standard library
    28 # import interfaces
    26 # import interfaces
    29 from pyams_security.interfaces import ISecurityManager, IUsersFolderPlugin, ILocalUser, IPrincipalInfo
    27 from pyams_security.interfaces import ISecurityManager, IUsersFolderPlugin, ILocalUser, IPrincipalInfo
    30 from pyams_security.interfaces.notification import INotificationSettings
    28 from pyams_security.interfaces.notification import INotificationSettings
    31 from pyramid_chameleon.interfaces import IChameleonTranslate
    29 from pyramid_chameleon.interfaces import IChameleonTranslate
    32 from pyramid_mailer.interfaces import IMailer
    30 from pyramid_mailer.interfaces import IMailer
       
    31 from zope.component.interfaces import ISite
    33 from zope.lifecycleevent.interfaces import IObjectAddedEvent
    32 from zope.lifecycleevent.interfaces import IObjectAddedEvent
    34 from zope.password.interfaces import IPasswordManager
    33 from zope.password.interfaces import IPasswordManager
    35 from zope.schema.interfaces import IVocabularyRegistry
    34 from zope.schema.interfaces import IVocabularyRegistry
    36 
    35 
    37 # import packages
    36 # import packages
    40 from pyams_security.principal import PrincipalInfo
    39 from pyams_security.principal import PrincipalInfo
    41 from pyams_utils.adapter import adapter_config
    40 from pyams_utils.adapter import adapter_config
    42 from pyams_utils.html import html_to_text
    41 from pyams_utils.html import html_to_text
    43 from pyams_utils.registry import query_utility, get_utility
    42 from pyams_utils.registry import query_utility, get_utility
    44 from pyams_utils.request import check_request
    43 from pyams_utils.request import check_request
       
    44 from pyams_utils.traversing import get_parent
    45 from pyramid.events import subscriber
    45 from pyramid.events import subscriber
    46 from pyramid_mailer.message import Message, Attachment
    46 from pyramid_mailer.message import Message, Attachment
    47 from zope.container.contained import Contained
    47 from zope.container.contained import Contained
    48 from zope.container.folder import Folder
    48 from zope.container.folder import Folder
    49 from zope.interface import implementer, provider, Invalid
    49 from zope.interface import implementer, provider, Invalid
   156     def check_login(self, login):
   156     def check_login(self, login):
   157         if not login:
   157         if not login:
   158             return False
   158             return False
   159         return login not in self
   159         return login not in self
   160 
   160 
   161     def get_principal(self, principal_id):
   161     def get_principal(self, principal_id, info=True):
   162         if not self.enabled:
   162         if not self.enabled:
   163             return None
   163             return None
   164         if not principal_id.startswith(self.prefix + ':'):
   164         if not principal_id.startswith(self.prefix + ':'):
   165             return None
   165             return None
   166         prefix, login = principal_id.split(':', 1)
   166         prefix, login = principal_id.split(':', 1)
   167         user = self.get(login)
   167         user = self.get(login)
   168         if user is not None:
   168         if user is not None:
   169             return PrincipalInfo(id='{prefix}:{login}'.format(prefix=self.prefix,
   169             if info:
   170                                                               login=user.login),
   170                 return PrincipalInfo(id='{prefix}:{login}'.format(prefix=self.prefix,
   171                                  title=user.title)
   171                                                                   login=user.login),
       
   172                                      title=user.title)
       
   173             else:
       
   174                 return user
   172 
   175 
   173     def get_all_principals(self, principal_id):
   176     def get_all_principals(self, principal_id):
   174         if not self.enabled:
   177         if not self.enabled:
   175             return set()
   178             return set()
   176         if self.get_principal(principal_id) is not None:
   179         if self.get_principal(principal_id) is not None: