custom register page

git-svn-id: svn://localhost/lasso-conform/trunk@24 2a3a78c3-912c-0410-af21-e1fb2d1df599
This commit is contained in:
fpeters 2006-11-27 19:43:43 +00:00
parent 44ecc1e1f0
commit e5c5cff135
1 changed files with 42 additions and 24 deletions

View File

@ -62,29 +62,6 @@ class LoginDirectory(Directory):
'<p>%s</p>' % _('Select the identification method you want to use :')
form.render()
class RegisterDirectory(Directory):
_q_exports = ['']
def _q_index [html] (self):
logger.info('register')
ident_methods = get_cfg('identification', {}).get('methods', [])
if len(ident_methods) == 0:
idps = get_cfg('idp', {})
if len(idps) == 0:
return template.error_page(_('Authentication subsystem is not yet configured.'))
ident_methods = ['idp'] # fallback to old behaviour; liberty.
if len(ident_methods) == 1:
method = ident_methods[0]
return qommon.ident.register(method)
else:
pass # XXX: register page when there is more than one ident method
def _q_lookup(self, component):
return qommon.ident.get_method_directory(component)
class RootDirectory(Directory):
_q_exports = ['', 'admin', 'backoffice', 'login', 'logout', 'liberty', 'saml',
'ident', 'register']
@ -169,6 +146,9 @@ class RootDirectory(Directory):
return template.error_page(_('Unknown command'))
'<p>%s</p>' % _('Logged in (%s)') % get_request().user.display_name
if get_request().user.anonymous:
'<a href="register">%s</a>' % _('Register')
'<pre>'
get_session().lasso_identity_provider_id
'</pre>'
@ -176,6 +156,45 @@ class RootDirectory(Directory):
form.render()
'</div>'
def register [html] (self):
if not get_request().user:
raise errors.AccessUnauthorizedError()
if not get_request().user.anonymous:
raise errors.AccessForbiddenError()
if not get_session().lasso_anonymous_identity_dump:
raise errors.AccessForbiddenError()
form = Form(enctype='multipart/form-data')
form.add(StringWidget, 'name', title = _('Name'), required = True, size=30)
form.add(EmailWidget, 'email', title = _('Email'), required = False, size=30)
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_submit() == 'cancel':
return redirect('/')
if form.get_submit() and not form.has_errors():
get_request().user.id = get_request().user.get_new_id()
get_request().user.name = form.get_widget('name').parse()
get_request().user.email = form.get_widget('email').parse()
get_request().user.anonymous = False
if get_publisher().user_class.count() == 0:
get_request().user.is_admin = True
get_request().user.lasso_dump = get_session().lasso_anonymous_identity_dump
get_session().lasso_anonymous_identity_dump = None
get_request().user.name_identifiers = [get_session().name_identifier]
get_request().user.store()
get_session().set_user(get_request().user.id)
return redirect('/')
template.html_top(_('Register'))
get_response().breadcrumb.append(('register', _('Register')))
form.render()
def do_login(self, form):
server = misc.get_lasso_server(protocol = 'saml2')
login = lasso.Login(server)
@ -259,6 +278,5 @@ class RootDirectory(Directory):
saml = saml2.Saml2Directory()
liberty = liberty.LibertyDirectory()
login = LoginDirectory()
register = RegisterDirectory()
ident = IdentDirectory()