mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 00:07:02 -04:00
Extract user utility code into own module
This provides more room for expansion, and reduces the amount of arbitrary code in the __init__.py file for the new package.
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
from functools import wraps
|
||||
from itertools import chain
|
||||
@@ -16,7 +15,7 @@ from flask import (
|
||||
session,
|
||||
url_for,
|
||||
)
|
||||
from flask_login import current_user, login_required
|
||||
from flask_login import current_user
|
||||
from notifications_utils.field import Field
|
||||
from notifications_utils.formatters import unescaped_formatted_list
|
||||
from notifications_utils.letter_timings import letter_can_be_cancelled
|
||||
@@ -39,7 +38,6 @@ from werkzeug.datastructures import MultiDict
|
||||
from werkzeug.routing import RequestRedirect
|
||||
|
||||
from app.models.spreadsheet import Spreadsheet
|
||||
from app.notify_client.organisations_api_client import organisations_client
|
||||
|
||||
SENDING_STATUSES = ['created', 'pending', 'sending', 'pending-virus-check']
|
||||
DELIVERED_STATUSES = ['delivered', 'sent', 'returned-letter']
|
||||
@@ -50,28 +48,6 @@ REQUESTED_STATUSES = SENDING_STATUSES + DELIVERED_STATUSES + FAILURE_STATUSES
|
||||
NOTIFICATION_TYPES = ["sms", "email", "letter", "broadcast"]
|
||||
|
||||
|
||||
with open('{}/email_domains.txt'.format(
|
||||
os.path.dirname(os.path.realpath(__file__))
|
||||
)) as email_domains:
|
||||
GOVERNMENT_EMAIL_DOMAIN_NAMES = [line.strip() for line in email_domains]
|
||||
|
||||
|
||||
user_is_logged_in = login_required
|
||||
|
||||
|
||||
def user_has_permissions(*permissions, **permission_kwargs):
|
||||
def wrap(func):
|
||||
@wraps(func)
|
||||
def wrap_func(*args, **kwargs):
|
||||
if not current_user.is_authenticated:
|
||||
return current_app.login_manager.unauthorized()
|
||||
if not current_user.has_permissions(*permissions, **permission_kwargs):
|
||||
abort(403)
|
||||
return func(*args, **kwargs)
|
||||
return wrap_func
|
||||
return wrap
|
||||
|
||||
|
||||
def service_has_permission(permission):
|
||||
|
||||
from app import current_service
|
||||
@@ -86,28 +62,6 @@ def service_has_permission(permission):
|
||||
return wrap
|
||||
|
||||
|
||||
def user_is_gov_user(f):
|
||||
@wraps(f)
|
||||
def wrapped(*args, **kwargs):
|
||||
if not current_user.is_authenticated:
|
||||
return current_app.login_manager.unauthorized()
|
||||
if not current_user.is_gov_user:
|
||||
abort(403)
|
||||
return f(*args, **kwargs)
|
||||
return wrapped
|
||||
|
||||
|
||||
def user_is_platform_admin(f):
|
||||
@wraps(f)
|
||||
def wrapped(*args, **kwargs):
|
||||
if not current_user.is_authenticated:
|
||||
return current_app.login_manager.unauthorized()
|
||||
if not current_user.platform_admin:
|
||||
abort(403)
|
||||
return f(*args, **kwargs)
|
||||
return wrapped
|
||||
|
||||
|
||||
def redirect_to_sign_in(f):
|
||||
@wraps(f)
|
||||
def wrapped(*args, **kwargs):
|
||||
@@ -264,24 +218,6 @@ def get_help_argument():
|
||||
return request.args.get('help') if request.args.get('help') in ('1', '2', '3') else None
|
||||
|
||||
|
||||
def email_address_ends_with(email_address, known_domains):
|
||||
return any(
|
||||
email_address.lower().endswith((
|
||||
"@{}".format(known),
|
||||
".{}".format(known),
|
||||
))
|
||||
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()
|
||||
)
|
||||
|
||||
|
||||
def get_template(
|
||||
template,
|
||||
service,
|
||||
|
||||
Reference in New Issue
Block a user