custom register page
git-svn-id: svn://localhost/lasso-conform/trunk@24 2a3a78c3-912c-0410-af21-e1fb2d1df599
This commit is contained in:
parent
44ecc1e1f0
commit
e5c5cff135
66
lcs/root.ptl
66
lcs/root.ptl
|
@ -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()
|
||||
|
||||
|
|
Reference in New Issue