Files
notifications-admin/app/templates/views/service-settings.html
David McDonald 752b685b26 Show only relevant platform admin settings for broadcast service
A few of note

Count in list of live services - this should be set to no in the API (to
be implemented) so we never show broadcast services in the list of live
services to reduce security leaks

Organisation - all broadcast services are currently going to be found in
a single organisation so we keep track of them easily. Therefore there
is no need to allow the changing of the organisation

Email authentication - we may in time not allow these services to use
email auth to log in but this hasn't been decided so let's keep it for
the moment

Rate limit - although a service may end up using our API to create
broadcasts, there is currently no rate limit check on this endpoint
and it's also extremely unlikely that any service would ever breach
the default limit
2021-02-04 17:36:30 +00:00

471 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "withnav_template.html" %}
{% from "components/banner.html" import banner_wrapper %}
{% from "components/table.html" import mapping_table, row, settings_row, text_field, optional_text_field, edit_field, field, boolean_field with context %}
{% block service_page_title %}
Settings
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-medium">Settings</h1>
<div class="bottom-gutter-3-2 settings-table body-copy-table">
{% call mapping_table(
caption='General',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Service name') }}
{{ text_field(current_service.name) }}
{{ edit_field(
'Change',
url_for('.service_name_change', service_id=current_service.id),
permissions=['manage_service'],
suffix='service name',
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Sign-in method') }}
{{ text_field(
'Email link or text message code'
if 'email_auth' in current_service.permissions
else 'Text message code'
) }}
{{ edit_field(
'Change',
url_for('.service_set_auth_type', service_id=current_service.id),
permissions=['manage_service'],
suffix='sign-in method',
)
}}
{% endcall %}
{% endcall %}
{% if not current_service.has_permission('broadcast') %}
{% call mapping_table(
caption='Email settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=True
) %}
{% call row() %}
{{ text_field('Send emails') }}
{{ boolean_field('email' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for(
'.service_set_channel',
channel='email',
service_id=current_service.id
),
permissions=['manage_service'],
suffix='your settings for sending emails',
)}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Reply-to email addresses') }}
{% call field(status='default' if current_service.count_email_reply_to_addresses == 0 else '') %}
{{ current_service.default_email_reply_to_address or 'Not set' }}
{% if current_service.count_email_reply_to_addresses > 1 %}
<div class="hint">
{{ '…and %d more' | format(current_service.count_email_reply_to_addresses - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage',
url_for('.service_email_reply_to', service_id=current_service.id),
permissions=['manage_service','manage_api_keys'],
suffix='reply-to email addresses',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Email branding') }}
{{ text_field(current_service.email_branding_name) }}
{{ edit_field(
'Change',
url_for('.branding_request', service_id=current_service.id, branding_type="email"),
permissions=['manage_service'],
suffix='email branding',
)}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Send files by email') }}
{{ text_field(current_service.contact_link if current_service.contact_link else "Not set up", truncate=true) }}
{{ edit_field(
'Manage',
url_for('.send_files_by_email_contact_details', service_id=current_service.id),
permissions=['manage_service'],
suffix='sending files by email',
)}}
{% endcall %}
{% endcall %}
{% call mapping_table(
caption='Text message settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=True
) %}
{% call row() %}
{{ text_field('Send text messages') }}
{{ boolean_field('sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for(
'.service_set_channel',
service_id=current_service.id,
channel='sms'
),
permissions=['manage_service'],
suffix='your settings for sending text messages',
)}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text message senders') }}
{% call field(status='default' if current_service.default_sms_sender == "None" else '') %}
{{ current_service.default_sms_sender | nl2br if current_service.default_sms_sender else 'None'}}
{% if current_service.count_sms_senders > 1 %}
<div class="hint">
{{ '…and %d more' | format(current_service.count_sms_senders - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage',
url_for('.service_sms_senders', service_id=current_service.id),
permissions=['manage_service','manage_api_keys'],
suffix='text message senders',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Start text messages with service name') }}
{{ boolean_field(current_service.prefix_sms) }}
{{ edit_field(
'Change',
url_for('.service_set_sms_prefix', service_id=current_service.id),
permissions=['manage_service'],
suffix='your settings for starting text messages with service name',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Send international text messages') }}
{{ boolean_field('international_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_international_sms', service_id=current_service.id),
permissions=['manage_service'],
suffix='your settings for sending international text messages',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Receive text messages') }}
{{ boolean_field('inbound_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_inbound_sms', service_id=current_service.id),
permissions=['manage_service'],
suffix='your settings for receiving text messages',
)
}}
{% endcall %}
{% endcall %}
{% call mapping_table(
caption='Letter settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=True
) %}
{% call row() %}
{{ text_field('Send letters') }}
{{ boolean_field('letter' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for(
'.service_set_channel',
channel='letter',
service_id=current_service.id
),
permissions=['manage_service'],
suffix='your settings for sending letters',
)}}
{% endcall %}
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Send international letters') }}
{{ boolean_field(current_service.has_permission('international_letters')) }}
{{ edit_field(
'Change',
url_for('.service_set_international_letters', service_id=current_service.id),
permissions=['manage_service']
)}}
{% endcall %}
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Sender addresses') }}
{% call field(status='' if current_service.count_letter_contact_details else 'default') %}
{% if current_service.default_letter_contact_block %}
{{ current_service.default_letter_contact_block_html }}
{% elif current_service.count_letter_contact_details %}
Blank
{% else %}
Not set
{% endif %}
{% if current_service.count_letter_contact_details > 1 %}
<div class="hint">
{{ '…and %d more' | format(current_service.count_letter_contact_details - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage',
url_for('.service_letter_contact_details', service_id=current_service.id),
permissions=['manage_service','manage_api_keys'],
suffix='sender addresses',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Letter branding') }}
{{ optional_text_field(current_service.letter_branding.name) }}
{{ edit_field(
'Change',
url_for('.branding_request', service_id=current_service.id, branding_type="letter"),
permissions=['manage_service'],
suffix='letter branding',
)}}
{% endcall %}
{% endcall %}
{% endif %}
</div>
{% if current_service.trial_mode %}
<h2 class="heading-medium top-gutter-0">Your service is in trial mode</h2>
{% if not current_service.has_permission('broadcast') %}
<p class="govuk-body">You can only:</p>
<ul class='list list-bullet'>
<li>send {{ current_service.message_limit }} text messages and emails per day</li>
<li>send messages to yourself and other people in your team</li>
<li>create letter templates, but not send them</li>
</ul>
{% endif %}
<p class="govuk-body">
{% if current_user.has_permissions('manage_service') %}
To remove these restrictions, you can send us a
<a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('.request_to_go_live', service_id=current_service.id) }}">request to go live</a>.
{% else %}
Your service manager can ask to have these restrictions removed.
{% endif %}
</p>
{% else %}
<h2 class="heading-medium top-gutter-0">Your service is live</h2>
{% if not current_service.has_permission('broadcast') %}
<p class="govuk-body">
You can send up to
{{ "{:,}".format(current_service.message_limit) }} messages
per day.
</p>
{% endif %}
<p class="govuk-body">
Problems or comments?
<a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.support') }}">Give feedback</a>.
</p>
{% endif %}
{% if current_user.platform_admin %}
<div class="settings-table body-copy-table top-gutter-4-3">
<h2 class="heading-medium">Platform admin settings</h2>
{% call mapping_table(
caption='Settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Live')}}
{% if current_service.trial_mode and not current_service.organisation_id %}
{{ text_field('No (organisation must be set first)') }}
{{ text_field('') }}
{% else %}
{{ boolean_field(not current_service.trial_mode) }}
{{ edit_field('Change', url_for('.service_switch_live', service_id=current_service.id), suffix='service status') }}
{% endif %}
{% endcall %}
{% if not current_service.has_permission('broadcast') %}
{% call row() %}
{{ text_field('Count in list of live services')}}
{{ text_field('Yes' if current_service.count_as_live else 'No') }}
{{ edit_field('Change', url_for('.service_switch_count_as_live', service_id=current_service.id), suffix='if service is counted in list of live services') }}
{% endcall %}
{% call row() %}
{{ text_field('Billing details')}}
{{ optional_text_field(current_service.billing_details, default="No billing details yet", wrap=True) }}
{{ edit_field('Change', url_for('.edit_service_billing_details', service_id=current_service.id), suffix='billing details for service') }}
{% endcall %}
{% endif %}
{% call row() %}
{{ text_field('Notes')}}
{{ optional_text_field(current_service.notes, default="No notes yet", wrap=True) }}
{{ edit_field('Change', url_for('.edit_service_notes', service_id=current_service.id), suffix='the notes for the service') }}
{% endcall %}
{% if not current_service.has_permission('broadcast') %}
{% call row() %}
{{ text_field('Organisation')}}
{% call field() %}
{% if current_service.organisation_id %}
<a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.organisation_dashboard', org_id=current_service.organisation_id) }}">
{{ current_service.organisation_name }}
</a>
{% else %}
<span class="table-field-status-default">Not set</span>
{% endif %}
{% if current_service.organisation_type %}
<div class="hint">
{{ current_service.organisation_type_label }}
</div>
{% endif %}
{% endcall %}
{{ edit_field('Change', url_for('.link_service_to_organisation', service_id=current_service.id), suffix='organisation for service') }}
{% endcall %}
{% call row() %}
{{ text_field('Rate limit')}}
{{ text_field('{:,} per minute'.format(current_service.rate_limit)) }}
{{ edit_field('Change', url_for('.set_rate_limit', service_id=current_service.id), suffix='rate limit') }}
{% endcall %}
{% call row() %}
{{ text_field('Message limit')}}
{{ text_field('{:,} per day'.format(current_service.message_limit)) }}
{{ edit_field('Change', url_for('.set_message_limit', service_id=current_service.id), suffix='daily message limit') }}
{% endcall %}
{% call row() %}
{{ text_field('Free text message allowance')}}
{{ text_field('{:,} per year'.format(current_service.free_sms_fragment_limit)) }}
{{ edit_field('Change', url_for('.set_free_sms_allowance', service_id=current_service.id), suffix='free text message allowance') }}
{% endcall %}
{% call row() %}
{{ text_field('Email branding' )}}
{{ text_field(current_service.email_branding_name) }}
{{ edit_field('Change', url_for('.service_set_email_branding', service_id=current_service.id), suffix='email branding (admin view)') }}
{% endcall %}
{% call row() %}
{{ text_field('Letter branding')}}
{{ optional_text_field(current_service.letter_branding.name) }}
{{ edit_field('Change', url_for('.service_set_letter_branding', service_id=current_service.id), suffix='letter branding (admin view)') }}
{% endcall %}
{% call row() %}
{{ text_field('Custom data retention')}}
{% call field() %}
{% for channel in current_service.data_retention %}
{% if loop.first %}
<ul>
{% endif %}
<li>{{ channel.notification_type|format_notification_type }} {{ channel.days_of_retention }} days</li>
{% if loop.last %}
</ul>
{% endif %}
{% else %}
<div class="table-field-status-default">Not set</div>
{% endfor %}
{% endcall %}
{{ edit_field('Change', url_for('.data_retention', service_id=current_service.id), suffix='data retention') }}
{% endcall %}
{% endif %}
{% for permission in service_permissions %}
{% if not service_permissions[permission].requires or current_service.has_permission(service_permissions[permission].requires) %}
{% call row() %}
{{ text_field(service_permissions[permission].title)}}
{{ boolean_field(current_service.has_permission(permission)) }}
{{ edit_field(
'Change',
url_for(
service_permissions[permission].endpoint or '.service_set_permission',
service_id=current_service.id,
permission=permission if not service_permissions[permission].endpoint else None
),
suffix='your settings for ' + service_permissions[permission].title,
) }}
{% endcall %}
{% endif %}
{% endfor %}
{% endcall %}
</div>
{% endif %}
{% if current_service.active and (current_service.trial_mode or current_user.platform_admin) %}
<p class="top-gutter-1-2">
<span class="page-footer-delete-link page-footer-delete-link-without-button">
<a class="govuk-link govuk-link--destructive" href="{{ url_for('.archive_service', service_id=current_service.id) }}">
Delete this service
</a>
</span>
{% if current_user.platform_admin %}
<span class="page-footer-delete-link">
<a href="{{ url_for('.suspend_service', service_id=current_service.id) }}" class="govuk-link govuk-link--destructive page-footer-delete-link">
Suspend service
</a>
</span>
{% endif %}
</p>
{% endif %}
{% if (not current_service.active) and current_user.platform_admin %}
<p class="govuk-body">
<div class="hint bottom-gutter-1-2">
Service suspended
</div>
<span class="page-footer-delete-link page-footer-delete-link-without-button">
<a class="govuk-link govuk-link--destructive" href="{{ url_for('.resume_service', service_id=current_service.id) }}">
Resume service
</a>
</span>
</p>
{% endif %}
{% endblock %}
}