work in progress: self registration with email notiification/confirmation
This commit is contained in:
parent
cad21c5dc3
commit
feb6ea1a06
3 changed files with 45 additions and 6 deletions
|
@ -27,6 +27,18 @@
|
|||
class="loops.organize.browser.member.MemberRegistration"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
for="loops.interfaces.INode"
|
||||
name="selfservice_registration.html"
|
||||
class="loops.organize.browser.member.SecureMemberRegistration"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
for="loops.interfaces.INode"
|
||||
name="selfservice_confirmation.html"
|
||||
class="loops.organize.browser.member.ConfirmMemberRegistration"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
for="loops.interfaces.INode"
|
||||
name="change_password.html"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
|
||||
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,8 +19,6 @@
|
|||
"""
|
||||
Definition of view classes and other browser related stuff for
|
||||
members (persons).
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from zope import interface, component
|
||||
|
@ -78,7 +76,7 @@ class PersonalInfo(ConceptView):
|
|||
|
||||
class MemberRegistration(NodeView, CreateForm):
|
||||
|
||||
interface = IMemberRegistration
|
||||
interface = IMemberRegistration # TODO: add company, create institution
|
||||
message = _(u'The user account has been created.')
|
||||
|
||||
formErrors = dict(
|
||||
|
@ -99,7 +97,7 @@ class MemberRegistration(NodeView, CreateForm):
|
|||
|
||||
def checkPermissions(self):
|
||||
personType = adapted(self.conceptManager['person'])
|
||||
perms = IOptions(personType)('registration.permission')
|
||||
perms = IOptions(personType)(self.permissions_key)
|
||||
if perms:
|
||||
return checkPermission(perms[0], self.context)
|
||||
return checkPermission('loops.ManageSite', self.context)
|
||||
|
@ -114,7 +112,7 @@ class MemberRegistration(NodeView, CreateForm):
|
|||
schema.fields.remove('birthDate')
|
||||
schema.fields.reorder(-2, 'loginName')
|
||||
return schema
|
||||
|
||||
# TODO: add company, create institution
|
||||
@Lazy
|
||||
def object(self):
|
||||
return Person(Concept())
|
||||
|
@ -157,6 +155,31 @@ class MemberRegistration(NodeView, CreateForm):
|
|||
return False
|
||||
|
||||
|
||||
class SecureMemberRegistration(MemberRegistration):
|
||||
|
||||
permissions_key = u'secure_registration.permissions'
|
||||
roles_key = u'secure_registration.roles'
|
||||
|
||||
@Lazy
|
||||
def schema(self):
|
||||
schema = super(MemberRegistration, self).schema
|
||||
schema.fields.remove('birthDate')
|
||||
schema.fields.remove('password')
|
||||
schema.fields.remove('passwordConfirm')
|
||||
schema.fields.remove('phoneNumbers')
|
||||
schema.fields.reorder(-2, 'loginName')
|
||||
return schema
|
||||
|
||||
|
||||
class ConfirmMemberRegistration(NodeView):
|
||||
|
||||
# TODO: control form via interface?
|
||||
|
||||
@Lazy
|
||||
def macro(self):
|
||||
return organize_macros.macros['confirm']
|
||||
|
||||
|
||||
class PasswordChange(NodeView, Form):
|
||||
|
||||
interface = IPasswordChange
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
<html i18n:domain="loops">
|
||||
|
||||
<metal:registration define-macro="confirm">
|
||||
</metal:registration>
|
||||
|
||||
|
||||
<metal:task define-macro="task">
|
||||
<metal:data use-macro="view/concept_macros/conceptdata">
|
||||
</metal:data>
|
||||
|
|
Loading…
Add table
Reference in a new issue