Merge pull request #1645 from alphagov/email-auth-domain

Allow admin to specify domain for email auth links
This commit is contained in:
Chris Hill-Scott
2018-02-09 16:31:41 +00:00
committed by GitHub
4 changed files with 29 additions and 9 deletions

View File

@@ -196,7 +196,7 @@ def send_user_email_code(user_to_send_to, data):
secret_code = str(uuid.uuid4())
personalisation = {
'name': user_to_send_to.name,
'url': _create_2fa_url(user_to_send_to, secret_code, data.get('next'))
'url': _create_2fa_url(user_to_send_to, secret_code, data.get('next'), data.get('email_auth_link_host'))
}
create_2fa_code(
@@ -413,10 +413,10 @@ def _create_confirmation_url(user, email_address):
return url_with_token(data, url, current_app.config)
def _create_2fa_url(user, secret_code, next_redir):
def _create_2fa_url(user, secret_code, next_redir, email_auth_link_host):
data = json.dumps({'user_id': str(user.id), 'secret_code': secret_code})
url = '/email-auth/'
ret = url_with_token(data, url, current_app.config)
ret = url_with_token(data, url, current_app.config, base_url=email_auth_link_host)
if next_redir:
ret += '?{}'.format(urlencode({'next': next_redir}))
return ret

View File

@@ -22,6 +22,7 @@ post_send_user_email_code_schema = {
# doesn't need 'to' as we'll just grab user.email_address. but lets keep it
# as allowed to keep admin code cleaner, but only as null to prevent confusion
'to': {'type': 'null'},
'email_auth_link_host': {'type': ['string', 'null']},
'next': {'type': ['string', 'null']},
},
'required': [],

View File

@@ -20,10 +20,10 @@ def pagination_links(pagination, endpoint, **kwargs):
return links
def url_with_token(data, url, config):
def url_with_token(data, url, config, base_url=None):
from notifications_utils.url_safe_token import generate_token
token = generate_token(data, config['SECRET_KEY'], config['DANGEROUS_SALT'])
base_url = config['ADMIN_BASE_URL'] + url
base_url = (base_url or config['ADMIN_BASE_URL']) + url
return base_url + token