__init__.py 5.03 KB
Newer Older
Jean-Paul Smets's avatar
Jean-Paul Smets committed
1 2
##############################################################################
#
3 4
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights
# Reserved.
Jean-Paul Smets's avatar
Jean-Paul Smets committed
5
#
6 7 8 9 10 11 12
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this
# distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
Jean-Paul Smets's avatar
Jean-Paul Smets committed
13 14 15 16 17
#
##############################################################################
""" ERP5Security product initialization.
"""

18 19
from copy import deepcopy

Jean-Paul Smets's avatar
Jean-Paul Smets committed
20 21 22 23 24 25 26
from AccessControl.Permissions import manage_users as ManageUsers
from Products.PluggableAuthService.PluggableAuthService import registerMultiPlugin
from Products.PluggableAuthService.permissions import ManageGroups

import ERP5UserManager
import ERP5GroupManager
import ERP5RoleManager
27
import ERP5UserFactory
28
import ERP5KeyAuthPlugin
29
import ERP5ExternalAuthPlugin
Jean-Paul Smets's avatar
Jean-Paul Smets committed
30

31
def mergedLocalRoles(object):
32 33 34 35 36 37 38 39 40 41 42 43 44
  """Returns a merging of object and its ancestors'
  __ac_local_roles__."""
  # Modified to take into account _getAcquireLocalRoles
  merged = {}
  object = getattr(object, 'aq_inner', object)
  while 1:
    if getattr(object, '__ac_local_roles__', None) is not None:
      roles = object.__ac_local_roles__ or {}
      if callable(roles): roles = roles()
      for k, v in roles.iteritems():
        merged.setdefault(k, []).extend(v)
    # block acquisition
    if getattr(object, '_getAcquireLocalRoles', None) is not None:
45
      if not object._getAcquireLocalRoles():
46
        break
47 48 49 50 51 52 53 54 55
    if getattr(object, 'aq_parent', None) is not None:
      object = object.aq_parent
      object = getattr(object, 'aq_inner', object)
      continue
    if getattr(object, 'im_self', None) is not None:
      object = object.im_self
      object = getattr(object, 'aq_inner', object)
      continue
    break
56

57
  return deepcopy(merged)
58

Jean-Paul Smets's avatar
Jean-Paul Smets committed
59 60 61
registerMultiPlugin(ERP5UserManager.ERP5UserManager.meta_type)
registerMultiPlugin(ERP5GroupManager.ERP5GroupManager.meta_type)
registerMultiPlugin(ERP5RoleManager.ERP5RoleManager.meta_type)
62
registerMultiPlugin(ERP5UserFactory.ERP5UserFactory.meta_type)
63
registerMultiPlugin(ERP5KeyAuthPlugin.ERP5KeyAuthPlugin.meta_type)
64
registerMultiPlugin(ERP5ExternalAuthPlugin.ERP5ExternalAuthPlugin.meta_type)
Jean-Paul Smets's avatar
Jean-Paul Smets committed
65 66 67 68 69 70

def initialize(context):

    context.registerClass( ERP5UserManager.ERP5UserManager
                         , permission=ManageUsers
                         , constructors=(
71
                            ERP5UserManager.manage_addERP5UserManagerForm,
Jean-Paul Smets's avatar
Jean-Paul Smets committed
72 73 74 75 76 77 78 79
                            ERP5UserManager.addERP5UserManager, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )

    context.registerClass( ERP5GroupManager.ERP5GroupManager
                         , permission=ManageGroups
                         , constructors=(
80
                            ERP5GroupManager.manage_addERP5GroupManagerForm,
Jean-Paul Smets's avatar
Jean-Paul Smets committed
81 82 83 84 85 86 87 88 89 90 91 92 93
                            ERP5GroupManager.addERP5GroupManager, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )

    context.registerClass( ERP5RoleManager.ERP5RoleManager
                         , permission=ManageUsers
                         , constructors=(
                            ERP5RoleManager.manage_addERP5RoleManagerForm,
                            ERP5RoleManager.addERP5RoleManager, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )
94 95 96 97 98 99 100 101 102 103

    context.registerClass( ERP5UserFactory.ERP5UserFactory
                         , permission=ManageUsers
                         , constructors=(
                            ERP5UserFactory.manage_addERP5UserFactoryForm,
                            ERP5UserFactory.addERP5UserFactory, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )

104 105 106 107 108 109 110 111 112
    context.registerClass( ERP5KeyAuthPlugin.ERP5KeyAuthPlugin
                         , permission=ManageUsers
                         , constructors=(
                            ERP5KeyAuthPlugin.manage_addERP5KeyAuthPluginForm,
                            ERP5KeyAuthPlugin.addERP5KeyAuthPlugin, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )

113 114 115 116 117 118 119 120 121
    context.registerClass( ERP5ExternalAuthPlugin.ERP5ExternalAuthPlugin
                         , permission=ManageUsers
                         , constructors=(
                            ERP5ExternalAuthPlugin.manage_addERP5ExternalAuthPluginForm,
                            ERP5ExternalAuthPlugin.addERP5ExternalAuthPlugin, )
                         , visibility=None
                         , icon='www/portal.gif'
                         )

122 123 124
from AccessControl.SecurityInfo import ModuleSecurityInfo
ModuleSecurityInfo('Products.ERP5Security.ERP5UserManager').declarePublic(
  'getUserByLogin')