Have permissions decorators check user signed in

Rather than force us to write the decorators in a specific order let’s
just have one decorator call the other. This should make fewer lines of
code, and fewer annoying test failures. It also means that the same way
of raising a `401` (through the `current_app` method) is used
everywhere.
This commit is contained in:
Chris Hill-Scott
2019-07-01 15:22:08 +01:00
parent 3da9e84ece
commit b620b677d3
24 changed files with 117 additions and 267 deletions

View File

@@ -3,7 +3,7 @@ from string import ascii_uppercase
from dateutil.parser import parse
from flask import abort, flash, redirect, render_template, request, url_for
from flask_login import current_user, login_required
from flask_login import current_user
from markupsafe import Markup
from notifications_python_client.errors import HTTPError
from notifications_utils.formatters import nl2br
@@ -47,7 +47,6 @@ form_objects = {
@main.route("/services/<service_id>/templates/<uuid:template_id>")
@user_has_permissions()
@login_required
def view_template(service_id, template_id):
template = current_service.get_template(template_id)
template_folder = current_service.get_template_folder(template['folder'])
@@ -88,7 +87,6 @@ def view_template(service_id, template_id):
@main.route("/services/<service_id>/start-tour/<uuid:template_id>")
@user_has_permissions('view_activity')
@login_required
def start_tour(service_id, template_id):
template = current_service.get_template(template_id)
@@ -112,7 +110,6 @@ def start_tour(service_id, template_id):
@main.route("/services/<service_id>/templates/<template_type>", methods=['GET', 'POST'])
@main.route("/services/<service_id>/templates/<template_type>/folders/<template_folder_id>", methods=['GET', 'POST'])
@user_has_permissions()
@login_required
def choose_template(service_id, template_type='all', template_folder_id=None):
template_folder = current_service.get_template_folder(template_folder_id)
@@ -221,7 +218,6 @@ def get_template_nav_items(template_folder_id):
@main.route("/services/<service_id>/templates/<template_id>.<filetype>")
@user_has_permissions()
@login_required
def view_letter_template_preview(service_id, template_id, filetype):
if filetype not in ('pdf', 'png'):
abort(404)
@@ -232,7 +228,6 @@ def view_letter_template_preview(service_id, template_id, filetype):
@main.route("/templates/letter-preview-image/<filename>")
@login_required
@user_is_platform_admin
def letter_branding_preview_image(filename):
template = {
@@ -276,7 +271,6 @@ def _view_template_version(service_id, template_id, version, letters_as_pdf=Fals
@main.route("/services/<service_id>/templates/<template_id>/version/<int:version>")
@user_has_permissions()
@login_required
def view_template_version(service_id, template_id, version):
return render_template(
'views/templates/template_history.html',
@@ -286,7 +280,6 @@ def view_template_version(service_id, template_id, version):
@main.route("/services/<service_id>/templates/<template_id>/version/<int:version>.<filetype>")
@user_has_permissions()
@login_required
def view_template_version_preview(service_id, template_id, version, filetype):
db_template = current_service.get_template(template_id, version=version)
return TemplatePreview.from_database_object(db_template, filetype)
@@ -338,7 +331,6 @@ def _add_template_by_type(template_type, template_folder_id):
@main.route("/services/<service_id>/templates/copy/from-service/<uuid:from_service>")
@main.route("/services/<service_id>/templates/copy/from-service/<uuid:from_service>/from-folder/<uuid:from_folder>")
@user_has_permissions('manage_templates')
@login_required
def choose_template_to_copy(
service_id,
from_service=None,
@@ -374,7 +366,6 @@ def choose_template_to_copy(
@main.route("/services/<service_id>/templates/copy/<uuid:template_id>", methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def copy_template(service_id, template_id):
from_service = request.args.get('from_service')
@@ -418,7 +409,6 @@ def _get_template_copy_name(template, existing_templates):
@main.route("/services/<service_id>/templates/action-blocked/<notification_type>/<return_to>/<template_id>")
@user_has_permissions('manage_templates')
@login_required
def action_blocked(service_id, notification_type, return_to, template_id):
if notification_type == 'sms':
notification_type = 'text messages'
@@ -436,7 +426,6 @@ def action_blocked(service_id, notification_type, return_to, template_id):
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/manage", methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def manage_template_folder(service_id, template_folder_id):
template_folder = current_service.get_template_folder_with_user_permission_or_403(template_folder_id, current_user)
form = TemplateFolderForm(
@@ -471,7 +460,6 @@ def manage_template_folder(service_id, template_folder_id):
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/delete", methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def delete_template_folder(service_id, template_folder_id):
template_folder = current_service.get_template_folder_with_user_permission_or_403(template_folder_id, current_user)
@@ -516,7 +504,6 @@ def delete_template_folder(service_id, template_folder_id):
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/add-<template_type>",
methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def add_service_template(service_id, template_type, template_folder_id=None):
if template_type not in ['sms', 'email', 'letter']:
@@ -578,7 +565,6 @@ def abort_403_if_not_admin_user():
@main.route("/services/<service_id>/templates/<template_id>/edit", methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def edit_service_template(service_id, template_id):
template = current_service.get_template_with_user_permission_or_403(template_id, current_user)
template['template_content'] = template['content']
@@ -661,7 +647,6 @@ def edit_service_template(service_id, template_id):
@main.route("/services/<service_id>/templates/<template_id>/delete", methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def delete_service_template(service_id, template_id):
template = current_service.get_template_with_user_permission_or_403(template_id, current_user)
@@ -711,7 +696,6 @@ def delete_service_template(service_id, template_id):
@main.route("/services/<service_id>/templates/<template_id>/redact", methods=['GET'])
@user_has_permissions('manage_templates')
@login_required
def confirm_redact_template(service_id, template_id):
template = current_service.get_template_with_user_permission_or_403(template_id, current_user)
@@ -736,7 +720,6 @@ def confirm_redact_template(service_id, template_id):
@main.route("/services/<service_id>/templates/<template_id>/redact", methods=['POST'])
@user_has_permissions('manage_templates')
@login_required
def redact_template(service_id, template_id):
service_api_client.redact_service_template(service_id, template_id)
@@ -755,7 +738,6 @@ def redact_template(service_id, template_id):
@main.route('/services/<service_id>/templates/<template_id>/versions')
@user_has_permissions('view_activity')
@login_required
def view_template_versions(service_id, template_id):
return render_template(
'views/templates/choose_history.html',
@@ -779,7 +761,6 @@ def view_template_versions(service_id, template_id):
@main.route('/services/<service_id>/templates/<template_id>/set-template-sender', methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def set_template_sender(service_id, template_id):
template = current_service.get_template_with_user_permission_or_403(template_id, current_user)
sender_details = get_template_sender_form_dict(service_id, template)
@@ -810,7 +791,6 @@ def set_template_sender(service_id, template_id):
@main.route('/services/<service_id>/templates/<template_id>/edit-postage', methods=['GET', 'POST'])
@user_has_permissions('manage_templates')
@login_required
def edit_template_postage(service_id, template_id):
template = current_service.get_template_with_user_permission_or_403(template_id, current_user)
if template["template_type"] != "letter":