check permission for user registration to avoid uncontrolled self-registration on public sites

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@4062 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-11-08 15:59:13 +00:00
parent 99fc384e8f
commit a812c80717

View file

@ -30,15 +30,18 @@ from zope.app.pagetemplate import ViewPageTemplateFile
from zope.app.principalannotation import annotations from zope.app.principalannotation import annotations
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.i18nmessageid import MessageFactory from zope.i18nmessageid import MessageFactory
from zope.security import checkPermission
from cybertools.composer.interfaces import IInstance from cybertools.composer.interfaces import IInstance
from cybertools.composer.schema.browser.common import schema_macros from cybertools.composer.schema.browser.common import schema_macros
from cybertools.composer.schema.browser.form import Form, CreateForm from cybertools.composer.schema.browser.form import Form, CreateForm
from cybertools.composer.schema.schema import FormState, FormError from cybertools.composer.schema.schema import FormState, FormError
from cybertools.meta.interfaces import IOptions
from cybertools.typology.interfaces import IType from cybertools.typology.interfaces import IType
from loops.browser.common import concept_macros from loops.browser.common import concept_macros
from loops.browser.concept import ConceptView, ConceptRelationView from loops.browser.concept import ConceptView, ConceptRelationView
from loops.browser.node import NodeView from loops.browser.node import NodeView
from loops.common import adapted
from loops.concept import Concept from loops.concept import Concept
from loops.organize.interfaces import ANNOTATION_KEY, IMemberRegistrationManager from loops.organize.interfaces import ANNOTATION_KEY, IMemberRegistrationManager
from loops.organize.interfaces import IMemberRegistration, IPasswordChange from loops.organize.interfaces import IMemberRegistration, IPasswordChange
@ -94,6 +97,13 @@ class MemberRegistration(NodeView, CreateForm):
def macro(self): def macro(self):
return schema_macros.macros['form'] return schema_macros.macros['form']
def checkPermissions(self):
personType = adapted(self.conceptManager['person'])
perms = IOptions(personType)('registration.permission')
if perms:
return checkPermission(perms[0], self.context)
return checkPermission('loops.ManageSite', self.context)
@Lazy @Lazy
def item(self): def item(self):
return self return self