mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-25 18:38:57 -04:00
Look in organisation for whitelisted domains
At the moment we have to update a YAML file and deploy the change to get a new domain whitelisted. We already have a thing for adding new domains – the organisation stuff. This commit extends the validation to look in the `domains` table on the API if it can’t find anything in the YAML whitelist. This has the advantage of: - not having to deploy code to whitelist a new domain - forcing us to create new organisations as they come along, so that users’ services automatically get allocated to the organisation once their domain is whitelisted
This commit is contained in:
14
app/utils.py
14
app/utils.py
@@ -31,6 +31,8 @@ from orderedset._orderedset import OrderedSet
|
||||
from werkzeug.datastructures import MultiDict
|
||||
from werkzeug.routing import RequestRedirect
|
||||
|
||||
from app.notify_client.organisations_api_client import organisations_client
|
||||
|
||||
SENDING_STATUSES = ['created', 'pending', 'sending', 'pending-virus-check']
|
||||
DELIVERED_STATUSES = ['delivered', 'sent', 'returned-letter']
|
||||
FAILURE_STATUSES = ['failed', 'temporary-failure', 'permanent-failure',
|
||||
@@ -315,13 +317,21 @@ def get_help_argument():
|
||||
return request.args.get('help') if request.args.get('help') in ('1', '2', '3') else None
|
||||
|
||||
|
||||
def is_gov_user(email_address):
|
||||
def email_address_ends_with(email_address, known_domains):
|
||||
return any(
|
||||
email_address.lower().endswith((
|
||||
"@{}".format(known),
|
||||
".{}".format(known),
|
||||
))
|
||||
for known in GOVERNMENT_EMAIL_DOMAIN_NAMES
|
||||
for known in known_domains
|
||||
)
|
||||
|
||||
|
||||
def is_gov_user(email_address):
|
||||
return email_address_ends_with(
|
||||
email_address, GOVERNMENT_EMAIL_DOMAIN_NAMES
|
||||
) or email_address_ends_with(
|
||||
email_address, organisations_client.get_domains()
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user