From e5c5cff1351fc21b6ceead53bf02c16fea1b6387 Mon Sep 17 00:00:00 2001 From: fpeters Date: Mon, 27 Nov 2006 19:43:43 +0000 Subject: [PATCH] custom register page git-svn-id: svn://localhost/lasso-conform/trunk@24 2a3a78c3-912c-0410-af21-e1fb2d1df599 --- lcs/root.ptl | 66 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/lcs/root.ptl b/lcs/root.ptl index 50f3267..59dd8e2 100644 --- a/lcs/root.ptl +++ b/lcs/root.ptl @@ -62,29 +62,6 @@ class LoginDirectory(Directory): '

%s

' % _('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')) '

%s

' % _('Logged in (%s)') % get_request().user.display_name + if get_request().user.anonymous: + '%s' % _('Register') + '
'
         get_session().lasso_identity_provider_id
         '
' @@ -176,6 +156,45 @@ class RootDirectory(Directory): form.render() '' + + 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()