admin: move idp token stuff to idp specific code
This commit is contained in:
parent
7b87646faa
commit
a2537caad3
|
@ -26,7 +26,6 @@ except NameError:
|
|||
from quixote import get_publisher, get_response, get_request, get_session, redirect
|
||||
from quixote.directory import Directory
|
||||
|
||||
from qommon import emails
|
||||
from qommon import errors
|
||||
from qommon import misc, get_cfg
|
||||
from wcs.roles import Role
|
||||
|
@ -237,66 +236,6 @@ class UserPage(Directory):
|
|||
self.user.remove_self()
|
||||
return redirect('..')
|
||||
|
||||
def token [html] (self):
|
||||
request = get_request()
|
||||
if request.form.has_key('cancel') or request.form.has_key('done'):
|
||||
return redirect('..')
|
||||
|
||||
html_top('users', title = _('Email with Identification Token'))
|
||||
"<h2>%s</h2>" % _('Email with Identification Token')
|
||||
|
||||
if not self.user.identification_token:
|
||||
token = '-'.join(['%04d' % random.randint(1, 9999) for x in range(4)])
|
||||
self.user.identification_token = str(token)
|
||||
self.user.store()
|
||||
token = self.user.identification_token
|
||||
|
||||
token_url = '%s://%s%sident/idp/token?%s' % (request.get_scheme(), request.get_server(),
|
||||
get_publisher().get_root_url(), self.user.identification_token)
|
||||
|
||||
'<p>'
|
||||
_('The identification token for this user is %s.\n') % token
|
||||
'<p>'
|
||||
'<p>'
|
||||
_('Its token URL is %s') % token_url
|
||||
'</p>'
|
||||
|
||||
if self.user.email:
|
||||
'<h3>%s</h3>' % _('Sample Email')
|
||||
|
||||
mail_data = {
|
||||
'sitename': get_cfg('misc', {}).get('sitename'),
|
||||
'token': token,
|
||||
'token_url': token_url
|
||||
}
|
||||
form = Form(enctype='multipart/form-data', use_tokens = True)
|
||||
|
||||
mail_subject = EmailsDirectory.get_subject('email_with_token')
|
||||
mail_subject_template = ezt.Template(compress_whitespace = False)
|
||||
mail_subject_template.parse(mail_subject)
|
||||
fd = StringIO()
|
||||
mail_subject_template.generate(fd, mail_data)
|
||||
mail_subject = fd.getvalue()
|
||||
|
||||
mail_body = EmailsDirectory.get_body('email_with_token')
|
||||
mail_body_template = ezt.Template(compress_whitespace = False)
|
||||
mail_body_template.parse(mail_body)
|
||||
fd = StringIO()
|
||||
mail_body_template.generate(fd, mail_data)
|
||||
mail_body = fd.getvalue()
|
||||
|
||||
form.add(StringWidget, 'subject', title = _('Subject'), required = True,
|
||||
value = mail_subject, size = 50)
|
||||
form.add(TextWidget, 'body', title = _('Body'), required = True,
|
||||
value = mail_body, cols = 70, rows = 10)
|
||||
form.add_submit('submit-email', _('Send Email'))
|
||||
|
||||
if form.get_submit() == 'submit-email':
|
||||
emails.email(mail_subject, mail_body, self.user.email)
|
||||
return redirect('..')
|
||||
|
||||
form.render()
|
||||
|
||||
def _q_lookup(self, component):
|
||||
ident_methods = get_cfg('identification', {}).get('methods', [])
|
||||
if component in ident_methods:
|
||||
|
@ -325,7 +264,6 @@ class UsersDirectory(Directory):
|
|||
debug_cfg = get_cfg('debug', {})
|
||||
|
||||
users = get_publisher().user_class.select(order_by = 'name')
|
||||
has_idp_as_ident = 'idp' in get_cfg('identification', {}).get('methods', [])
|
||||
|
||||
checked_roles = None
|
||||
if get_request().form.get('filter'):
|
||||
|
|
|
@ -32,6 +32,7 @@ from qommon import misc, get_cfg
|
|||
from qommon.form import *
|
||||
from qommon.tokens import Token
|
||||
|
||||
from qommon import emails
|
||||
from qommon import template
|
||||
from qommon import errors
|
||||
|
||||
|
@ -524,8 +525,6 @@ class AdminIDPDir(Directory):
|
|||
return redirect('.')
|
||||
|
||||
|
||||
|
||||
|
||||
class AdminIDPUI(Directory):
|
||||
_q_exports = ['', 'delete', 'edit', 'update_remote']
|
||||
|
||||
|
@ -1029,12 +1028,85 @@ class MethodAdminDirectory(Directory):
|
|||
('grab-user-with-wsf', 'identity-creation', 'notify-on-register', 'email-confirmation'))
|
||||
|
||||
|
||||
class MethodUserDirectory(Directory):
|
||||
_q_exports = ['token']
|
||||
|
||||
def __init__(self, user):
|
||||
self.user = user
|
||||
|
||||
def get_actions(self):
|
||||
if not self.user.name_identifiers:
|
||||
return []
|
||||
return [('token', _('Send email with identification token'))]
|
||||
|
||||
def token [html] (self):
|
||||
request = get_request()
|
||||
if request.form.has_key('cancel') or request.form.has_key('done'):
|
||||
return redirect('..')
|
||||
|
||||
admin_html_top('users', title = _('Email with Identification Token'))
|
||||
'<h2>%s</h2>' % _('Email with Identification Token')
|
||||
|
||||
if not self.user.identification_token:
|
||||
token = '-'.join(['%04d' % random.randint(1, 9999) for x in range(4)])
|
||||
self.user.identification_token = str(token)
|
||||
self.user.store()
|
||||
token = self.user.identification_token
|
||||
|
||||
token_url = '%s://%s%sident/idp/token?%s' % (request.get_scheme(), request.get_server(),
|
||||
get_publisher().get_root_url(), self.user.identification_token)
|
||||
|
||||
'<p>'
|
||||
_('The identification token for this user is %s.\n') % token
|
||||
'<p>'
|
||||
'<p>'
|
||||
_('Its token URL is %s') % token_url
|
||||
'</p>'
|
||||
|
||||
if self.user.email:
|
||||
'<h3>%s</h3>' % _('Sample Email')
|
||||
|
||||
mail_data = {
|
||||
'sitename': get_cfg('misc', {}).get('sitename'),
|
||||
'token': token,
|
||||
'token_url': token_url
|
||||
}
|
||||
form = Form(enctype='multipart/form-data', use_tokens = True)
|
||||
|
||||
mail_subject = EmailsDirectory.get_subject('email_with_token')
|
||||
mail_subject_template = ezt.Template(compress_whitespace = False)
|
||||
mail_subject_template.parse(mail_subject)
|
||||
fd = StringIO()
|
||||
mail_subject_template.generate(fd, mail_data)
|
||||
mail_subject = fd.getvalue()
|
||||
|
||||
mail_body = EmailsDirectory.get_body('email_with_token')
|
||||
mail_body_template = ezt.Template(compress_whitespace = False)
|
||||
mail_body_template.parse(mail_body)
|
||||
fd = StringIO()
|
||||
mail_body_template.generate(fd, mail_data)
|
||||
mail_body = fd.getvalue()
|
||||
|
||||
form.add(StringWidget, 'subject', title = _('Subject'), required = True,
|
||||
value = mail_subject, size = 50)
|
||||
form.add(TextWidget, 'body', title = _('Body'), required = True,
|
||||
value = mail_body, cols = 70, rows = 10)
|
||||
form.add_submit('submit-email', _('Send Email'))
|
||||
|
||||
if form.get_submit() == 'submit-email':
|
||||
emails.email(mail_subject, mail_body, self.user.email)
|
||||
return redirect('..')
|
||||
|
||||
form.render()
|
||||
|
||||
|
||||
|
||||
class IdPAuthMethod(AuthMethod):
|
||||
key = 'idp'
|
||||
description = N_('Liberty/SAML2 identity provider')
|
||||
method_directory = MethodDirectory
|
||||
method_admin_directory = MethodAdminDirectory
|
||||
method_user_directory = MethodUserDirectory
|
||||
|
||||
def is_interactive(self):
|
||||
idps = get_cfg('idp', {})
|
||||
|
|
Loading…
Reference in New Issue