Merge branch 'master' of github.com:alphagov/notifications-admin into deactivate-services-plat-admin

This commit is contained in:
Leo Hemsted
2016-11-14 17:15:05 +00:00
48 changed files with 751 additions and 411 deletions

View File

@@ -1,6 +1,8 @@
{% macro radios(
field,
hint=None
hint=None,
disable=[],
option_hints={}
) %}
<div class="form-group {% if field.errors %} error{% endif %}">
<fieldset>
@@ -14,8 +16,21 @@
</legend>
{% for option in field %}
<label class="block-label" for="{{ option.id }}">
{{ option }}
<input
id="{{ option.id }}" name="{{ option.name }}" type="radio" value="{{ option.data }}"
{% if option.data in disable %}
disabled
{% endif %}
{% if option.checked %}
checked
{% endif %}
>
{{ option.label.text }}
{% if option_hints[option.data] %}
<div class="block-label-hint">
{{ option_hints[option.data] }}
</div>
{% endif %}
</label>
{% endfor %}
</fieldset>
@@ -38,7 +53,7 @@
</span>
{% endif %}
</legend>
<div class="radio-select" data-module="radio-select">
<div class="radio-select" data-module="radio-select" data-categories="{{ field.categories|join(',') }}">
<div class="radio-select-column">
{% for option in field %}
<label class="block-label" for="{{ option.id }}">

View File

@@ -49,10 +49,20 @@
</tr>
{%- endmacro %}
{% macro field(align='left', status='') -%}
<td class="table-field{% if align == 'right' %}-right-aligned{% endif %}">
<span class="{{ 'table-field-status-' + status if status }}">{{ caller() }}</span>
</td>
{% macro row_group(id=None) %}
<tbody class="table-row-group" {% if id %}id="{{id}}"{% endif %}>
{{ caller() }}
</tbody>
{%- endmacro %}
{% macro field(align='left', status='', border=True) -%}
{% set field_alignment = 'table-field-right-aligned' if align == 'right' else 'table-field-center-aligned' %}
{% set border = '' if border else 'table-field-noborder' %}
<td class="{{ [field_alignment, border]|join(' ') }}">
<span class="{{ 'table-field-status-' + status if status }}">{{ caller() }}</span>
</td>
{%- endmacro %}
{% macro row_heading() -%}

View File

@@ -5,7 +5,7 @@
{% if job.job_status == 'scheduled' %}
<p>
Sending will start at {{ job.scheduled_for|format_time }}
Sending will start {{ job.scheduled_for|format_datetime_relative }}
</p>
<div class="page-footer">
<form method="post">

View File

@@ -1,5 +1,13 @@
<div class="ajax-block-container">
<p class='heading-small bottom-gutter'>
Uploaded by {{ job.created_by.name }} on {{ job.created_at|format_datetime_short }}
{% if job.scheduled_for %}
{% if job.processing_started %}
Sent by {{ job.created_by.name }} on {{ job.processing_started|format_datetime_short }}
{% else %}
Uploaded by {{ job.created_by.name }} on {{ job.created_at|format_datetime_short }}
{% endif %}
{% else %}
Sent by {{ job.created_by.name }} on {{ job.created_at|format_datetime_short }}
{% endif %}
</p>
</div>

View File

@@ -0,0 +1,20 @@
<h2 class="heading-medium">
Optional content
</h2>
<p>
Use double brackets and ?? to define optional content.
</p>
<p>
For example if you only want to show something to people who are under
18:
</p>
<div class="panel panel-border-wide">
<p>
((under18??Please get your application signed by a parent or
guardian.))
</p>
</div>
<p>
For each person you send this message to, specify yes or no to
show or hide this content.
</p>

View File

@@ -13,15 +13,6 @@
API integration
</h1>
{% if current_service.restricted %}
{% call banner_wrapper(type='warning') %}
<h2 class="heading-medium">Your service is in trial mode</h2>
<p>
You can only send messages to people in your team or whitelist.
</p>
{% endcall %}
{% endif %}
<nav class="grid-row bottom-gutter-1-2">
<div class="column-one-third">
<a class="pill-separate-item" href="{{ url_for('.api_keys', service_id=current_service.id) }}">API keys</a>

View File

@@ -37,9 +37,9 @@
{% if item.key_type == 'normal' %}
<span class="visually-hidden">Normal</span>
{% elif item.key_type == 'team' %}
Only sends to team members or whitelist
Sends to anyone on your whitelist
{% elif item.key_type == 'test' %}
Simulates sending messages
Pretends to send messages
{% endif %}
</span>
</div>

View File

@@ -2,9 +2,10 @@
{% from "components/page-footer.html" import page_footer %}
{% from "components/textbox.html" import textbox %}
{% from "components/radios.html" import radios %}
{% from "components/banner.html" import banner_wrapper %}
{% block page_title %}
Add a new API key GOV.UK Notify
Create an API key GOV.UK Notify
{% endblock %}
{% block maincolumn_content %}
@@ -14,8 +15,8 @@
</h1>
<form method="post">
{{ radios(form.key_type) }}
{{ textbox(form.key_name, label='Name for this key') }}
{{ radios(form.key_type, disable=disabled_options, option_hints=option_hints) }}
{{ page_footer('Continue') }}
</form>

View File

@@ -14,6 +14,12 @@
Whitelist
</h1>
<p>
You and members of
<a href="{{ url_for('main.manage_users', service_id=current_service.id) }}">your team</a>
are included in the whitelist automatically.
</p>
<form method="post">
<div class="grid-row">

View File

@@ -6,7 +6,7 @@
{% if scheduled_jobs %}
<div class='dashboard-table'>
<h2 class="heading-medium">
In the next 24 hours
In the next few days
</h2>
{% call(item, row_number) list_table(
scheduled_jobs,
@@ -23,7 +23,7 @@
<div class="file-list">
<a class="file-list-filename" href="{{ url_for('.view_job', service_id=current_service.id, job_id=item.id) }}">{{ item.original_file_name }}</a>
<span class="file-list-hint">
Sending at {{ item.scheduled_for|format_time }}
Sending {{ item.scheduled_for|format_datetime_relative }}
</span>
</div>
{% endcall %}

View File

@@ -29,6 +29,7 @@
<aside class="column-whole">
{% include "partials/templates/guidance-formatting.html" %}
{% include "partials/templates/guidance-personalisation.html" %}
{% include "partials/templates/guidance-optional-content.html" %}
{% include "partials/templates/guidance-links.html" %}
</aside>
</div>

View File

@@ -27,6 +27,7 @@
</div>
<aside class="column-whole">
{% include "partials/templates/guidance-personalisation.html" %}
{% include "partials/templates/guidance-optional-content.html" %}
{% include "partials/templates/guidance-links.html" %}
{% include "partials/templates/guidance-character-count.html" %}
</aside>

View File

@@ -14,39 +14,32 @@ Information security guidelines GOV.UK Notify
Information security for text messages, emails and letters
</h1>
{% call banner_wrapper(type='warning') %}
<h2 class="heading-medium">This content is a work in progress</h2>
<p>It should not be relied upon</p>
{% endcall %}
<p>A more pragmatic approach to information security</p>
<p class="lede">In the past, government has taken a risk-averse approach to information security. This resulted in services that were unhelpful and hard to use.</p>
<p class="lede">Use a practical approach to information security, one that balances a users need to be kept informed with being kept safe.</p>
<p class="lede">Were switching to a more pragmatic approach to information security one that balances a users needs to be kept informed and kept safe.</p>
<p>In the past, for example, our blanket no-links policy meant we were telling people to “search the UK government and click the first result” rather than just telling them to “visit <a href="https://www.gov.uk">www.gov.uk</a>”. Other services had a blanket policy of not sending any information at all, resulting in obtuse messages like “You have a message in your online account. Sign in to see the message.” (no sign-in link included).</p>
<section id="contents">
<h2 class="heading-medium">Contents</h2>
<ul class="list list-bullet">
<li><a href="#start-with-needs">Start with needs user needs, not government needs</a></li>
<li><a href="#start-with-needs">Start with user needs, not government needs</a></li>
<li><a href="#understand-the-risks">Understand the risks</a></li>
<li><a href="#information-security-guidelines">Information security guidelines</a></li>
<li><a href="#information-security-guidelines">Information security principles</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#you-can-do-more">You can do more if you want to</a></li>
</ul>
</section>
<section id="start-with-needs">
<h2 class="heading-medium">Start with needs user needs, not government needs</h2>
<h2 class="heading-medium">Start with user needs, not government needs</h2>
<p>Start by writing the message you want to send. Dont worry about the information security aspect just yet write the message you want to convey as clearly and directly as possible.</p>
<p>We have <a href="">design patterns</a> and <a href="">content guidance</a> to help you write clearly and convey the right information at the right time.</p>
<p>Use our <a href="https://designpatterns.hackpad.com/Notifications-5vuitmNqIjZ">design patterns</a> along with the <a href="https://www.gov.uk/topic/government-digital-guidance/content-publishing">GOV.UK style guide</a> to help you write clearly and convey the right information at the right time.</p>
<p>Once you have a message which meets user needs, look at it in relation to the risks below. Use this framework to decide if you need to change the message in order to keep the users safe.</p>
<p>Once you have a message which meets user needs, look at it in relation to the risks we outline. Use this to decide if you need to change the message in order to keep the users safe.</p>
</section>
<section id="understand-the-risks">
@@ -54,19 +47,19 @@ Information security guidelines GOV.UK Notify
<p>There are 3 main risks involved in sending notifications by text message, email or letter:</p>
<ul class="list list-bullet">
<li>Someone accidentally sees the notification</li>
<li>An attacker intercepts a message, or gains access to someones email inbox, phone messages or paper files</li>
<li>An attacker tricks the user by sending a fake notification (phishing)</li>
</ul>
<ol class="list list-number">
<li>Someone accidentally sees the notification.</li>
<li>An attacker intercepts a message, or gains access to someones email inbox, phone messages or paper files.</li>
<li>An attacker tricks the user by sending a fake notification (phishing).</li>
</ol>
<h3 class="heading-small" id="risk-privacy">Someone accidentally sees the notification</h3>
<p>For some messages, the recipient would be unhappy if someone else accidentally saw the contents for example, the results of a recent medical test.</p>
<p>For some messages, the recipient would be unhappy if someone else accidentally saw the contents, for example, the results of a recent medical test.</p>
<p>This is a privacy issue in this case the unintended recipient isnt trying to steal money or identity information.</p>
<p>To address this risk, dont reveal the important information in the subject line or opening sentence, or ask the user to sign in to see the information in full. More about this below.</p>
<p>To address this risk, dont reveal the important information in the subject line or opening sentence, or ask the user to sign in to see the information in full.</p>
<h3 class="heading-small" id="risk-fraud">An attacker intercepts a message, or gains access to someones email inbox, phone messages or paper files</h3>
@@ -74,7 +67,7 @@ Information security guidelines GOV.UK Notify
<p>Its also possible for a criminal to gain access to someones entire email inbox, phone messages or paper files. Email accounts can be hacked, phones and paper files can be stolen, left lying around or picked out of the rubbish.</p>
<p>In both cases, criminals are looking for information they can use to commit fraud. To address this risk, dont send payment details, ID numbers or any other information that can be used for fraud. More about this below.</p>
<p>In both cases, criminals are looking for information they can use to commit fraud. To address this risk, dont send payment details, ID numbers or any other information that can be used for fraud.</p>
<h3 class="heading-small" id="risk-phishing">An attacker tricks the user by sending a fake notification (phishing)</h3>
@@ -82,26 +75,26 @@ Information security guidelines GOV.UK Notify
<p>This is known as a phishing attack.</p>
<p>To address this risk, dont send <strong>requests</strong> for personal information <strong>of any kind</strong>, unless the request is <strong>directly connected with a transaction</strong>. More about this below.</p>
<p>To address this risk, dont send requests for personal information of any kind, unless the request is directly connected with a transaction.</p>
</section>
<section id="information-security-guidelines">
<h2 class="heading-medium">Information security guidelines</h2>
<h2 class="heading-medium">Information security principles</h2>
<h3 class="heading-small" id="guideline-privacy">Protect the users privacy</h3>
<p>If you think the recipient might be upset if someone accidentally saw the message contents, either:</p>
<p>To avoid someone other than the recipient accidentally seeing a message that has sensitive or confidential information, either:</p>
<ul class="list list-bullet">
<li>use a fairly generic subject line and opening sentence, and only give the information in full within the body of the message, or</li>
<li>send a fairly generic message which asks the person to sign in to see the information in full</li>
<li>use a generic subject line and opening sentence, and only give the information in full within the body of the message</li>
<li>send a generic message which asks the person to sign in to see the information in full</li>
</ul>
<p>Remember that even the sender ID also reveals information. For example, dont set your sender name as STI clinic.</p>
<h3 class="heading-small" id="guideline-fraud">Dont send information that can be used for fraud</h3>
<p>To reduce the risk if messages are intercepted, hacked or stolen, dont send information that can be used for fraud either now or in the future:</p>
<p>To reduce the risk if messages are intercepted, hacked or stolen, dont send messages with:</p>
<ul class="list list-bullet">
<li>payment details</li>
@@ -116,59 +109,82 @@ Information security guidelines GOV.UK Notify
<h3 class="heading-small" id="guideline-phishing">Dont send requests for personal information of any kind, unless the request is directly connected with a transaction</h3>
<p>To reduce the risk from phishing attacks, dont send <strong>requests</strong> for personal information <strong>of any kind</strong>, unless the request is <strong>directly connected with a transaction</strong>.</p>
<p>To reduce the risk from phishing attacks, dont send requests for personal information of any kind, unless the request is directly connected with a transaction.</p>
<p>Its OK to send a request for personal information if its directly connected with a transaction. Here are two examples of where it would be OK:</p>
<p>Its OK to send a request for personal information if its directly connected with a transaction. For example it's OK to send a notification with a link asking users to reset their password if they've requested it by clicking on a Forgot your password? link.</p>
<h3 class="heading-small" id="guideline-links">Its OK to include links</h3>
<p>The same rules apply to links:</p>
<ul class="list list-bullet">
<li>Someone clicks a Forgot your password? link its OK to send them a link where they can reset their password</li>
<li>Someones MOT is about to expire y</li>
<li>Dont send links that reveal information that can be used for fraud.</li>
<li>Dont send unsolicited messages that include a link requesting personal information of any kind (its OK to send a message with a link requesting information if the user has just requested it).</li>
</ul>
<h3 class="heading-small" id="guideline-links">Its OK to include links but you need to follow these rules</h3>
<p>There are additional rules that apply specifically to links.</p>
<p>The same 2 rules above apply to links, too:</p>
<ul class="list list-bullet">
<li>Dont send links that reveal information that can be used for fraud</li>
<li>Dont send unsolicited messages that include a link requesting personal information of any kind (its OK to send a message with a link requesting information if the user has just requested it)</li>
</ul>
<p>There are additional rules that apply specifically to links:</p>
<ul class="list list-bullet">
<li>Links must point to a .gov.uk domain for example, <a href="https://www.gov.uk">https://www.gov.uk</a> or <a href="https://www.armslengthbody.gov.uk">https://www.armslengthbody.gov.uk</a></li>
<li>Links must show the URL in full for example <a href="https://www.gov.uk/vehicle-tax">https://www.gov.uk/vehicle-tax</a>, not <a href="https://www.gov.uk/vehicle-tax">Vehicle tax</a></li>
<li>Dont use redirects or tracking links disguising the URL makes phishing easier. Just show the URL in full</li>
<li>Dont link directly to a sign-in page this is a request for personal data. If the user needs to sign in to your service, link to your start page on GOV.UK</li>
<li>Its OK to deep-link into your service, as long as the user doesnt have to sign in to view the information or take action</li>
</ul>
<ol class="list list-number">
<li>Links must point to a .gov.uk domain for example, https://www.gov.uk or https://www.armslengthbody.gov.uk.</li>
<li>Links must show the URL in full for example https://www.gov.uk/vehicle-tax, not gov.uk/vehicle-tax.</li>
<li>Dont use redirects or tracking links disguising the URL makes phishing easier. Just show the URL in full.</li>
<li>Dont link directly to a sign-in page this is a request for personal data. If the user needs to sign in to your service, link to your start page on GOV.UK.</li>
<li>Its OK to deep-link into your service, as long as the user doesnt have to sign in to view the information or take action.</li>
</ol>
<h3 class="heading-small" id="guideline-attachments">Dont send attachments</h3>
<p>If you want to communicate something, write it in the body of the email. This is more user-friendly. If the information is too sensitive to include in the email body, its too sensitive to include in an attachment.</p>
<p>If you need to send someone a file, make the file available within your service, then link to it. </p>
<p>Criminals often use attachments to conceal viruses, spyware and other kinds of malware. We want people to be cautious about opening attachments.</p>
<p>If you need to send someone a file, make the file available within your service, then link to it.</p>
<h3 class="heading-small" id="guideline-name">Include the users name it makes phishing more difficult</h3>
<p>Start your message by addressing the user. For example, Hi Alice Smith or Dear Bob Jones. Including this extra piece of information makes phishing more difficult.</p>
<p>Start your message by addressing the user. For example, Hi Alice Smith, or Dear Bob Jones. Including this extra piece of information makes phishing more difficult.</p>
<h3 class="heading-small" id="guideline-technical">Use technical approaches to improve privacy and prevent phishing</h3>
<p>There are several technical approaches to preventing phishing <a href="https://www.gov.uk/guidance/common-technology-services-cts-secure-email-blueprint">SPF/DKIM, DMARC</a> and <a href="https://en.m.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>. You must use them.</p>
<p>There are several technical approaches to preventing phishing. You must use <a href="https://www.gov.uk/guidance/common-technology-services-cts-secure-email-blueprint">SPF/DKIM, DMARC</a> and <a href="https://en.m.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>.</p>
<p>SPF/DKIM and DMARC make sure your emails get delivered, whilst phishing and spam email gets filtered into junk mail.</p>
<p>TLS makes sure that no-one can intercept your emails.</p>
</section>
<section id="examples">
<h2 class="heading-medium">Examples</h2>
<h3 class="heading-small">Example of an appointment reminder</h3>
<p>“Dear Anne Smith, youve got a licence appointment tomorrow at 2:15pm at the Licence Office, 1 Chapel Hill, Heswall, Bournemouth BH1 1AA. To cancel your appointment, visit licensing.service.gov.uk/appointment/12345678/cancel. To change your appointment time, sign in to your account.”</p>
<p>This is a good example because:</p>
<ul class="list list-bullet">
<li>the message and link doesn't reveal any sensitive personal data</li>
<li>it doesn't ask for personal data, passwords or payment details</li>
<li>the reminder addresses the user by their name, making phishing attacks more difficult</li>
<li>the link just cancels the appointment which minimises what an attacker can do</li>
<li>users have to sign in to change the appointment time, making it harder for an attacker to know what their appointment time is</li>
<li>the topic is something the user is familiar with</li>
</ul>
<h3 class="heading-small">Example to add a photo to an environmental permit</h3>
<p>“Dear Andrew Jones, to add a location photo to your environmental permit application, visit environmentalpermit.service.gov.uk/12345678/add-photo. If you didnt request this link, please ignore this message.”</p>
<p>This is a good example because:</p>
<ul class="list list-bullet">
<li>the message and link doesn't reveal any sensitive personal data</li>
<li>it doesn't ask for personal data, passwords or payment details</li>
<li>the reminder addresses the user by their name, making phishing attacks more difficult</li>
<li>the link only lets users add a photo to an environmental permit application it doesnt complete the process, which minimises what an attacker can do</li>
<li>it shows users what to do if the message doesn't apply to them</li>
</ul>
</section>
<section id="you-can-do-more">
<h2 class="heading-medium">You can do more if you want to</h2>
<p>These guidelines are the minimum requirement. If you want to take more stringent measures for your service, thats fine.</p>
<p>These guidelines are the minimum requirement. You can take stricter measures for your service if you think it's necessary.</p>
<p>Just make sure youre balancing your users needs to be kept informed and kept safe.</p>
</section>

View File

@@ -2,53 +2,78 @@
{% from "components/big-number.html" import big_number, big_number_with_status %}
{% from "components/message-count-label.html" import message_count_label %}
{% from "components/browse-list.html" import browse_list %}
{% from "components/table.html" import list_table, field, right_aligned_field_heading, hidden_field_heading, text_field %}
{% from "components/table.html" import mapping_table, field, stats_fields, row_group, row, right_aligned_field_heading, hidden_field_heading, text_field %}
{% macro stats_fields(channel, data) -%}
{% call field(border=False) %}
<span class="heading-medium">{{ channel.title() }}</span>
{% endcall %}
{% call field(align='right', border=False) %}
{{ big_number(data[channel]['requested'], smaller=True) }}
{% endcall %}
{% call field(align='right', border=False) %}
{{ big_number(data[channel]['delivered'], smaller=True) }}
{% endcall %}
{% call field(align='right', status='error' if data[channel]['failed'], border=False) %}
{{ big_number(data[channel]['failed'], smaller=True) }}
{% endcall %}
{%- endmacro %}
{% macro services_table(services, caption) %}
{% call(item, row_number) list_table(
services,
{% call(item, row_number) mapping_table(
caption=caption,
caption_visible=True,
field_headings=[
'Service',
hidden_field_heading('Status'),
right_aligned_field_heading('Sending'),
right_aligned_field_heading('Delivered'),
right_aligned_field_heading('Failed')
'Service',
hidden_field_heading('Type'),
right_aligned_field_heading('Sending'),
right_aligned_field_heading('Delivered'),
right_aligned_field_heading('Failed')
],
field_headings_visible=True
) %}
{% call field() %}
<div>
<a href="{{ url_for('main.service_dashboard', service_id=item['id']) }}" class="browse-list-link">{{ item['name'] }}</a>
</div>
{% endcall %}
{% if not item['active'] %}
{% call field(status='default') %}
<span class="heading-medium">archived</span>
{% for service in services %}
{% call row_group() %}
{% call row() %}
{% call field(border=False) %}
<a href="{{ url_for('main.service_dashboard', service_id=service['id']) }}" class="browse-list-link">{{ service['name'] }}</a>
{% endcall %}
{{ stats_fields('email', service['stats']) }}
{% endcall %}
{% call row() %}
{% if not service['active'] %}
{% call field(status='default') %}
<span class="heading-medium">archived</span>
{% endcall %}
{% elif service['research_mode'] %}
{% call field(border=False) %}
<span class="research-mode">research mode</span>
{% endcall %}
{% elif not service['restricted'] %}
{% call field(status='error') %}
<span class="heading-medium">Live</span>
{% endcall %}
{% else %}
{{ text_field('') }}
{% endif %}
{{ stats_fields('sms', service['stats']) }}
{% endcall %}
{% endcall %}
{% elif item['research_mode'] %}
{% call field() %}
<span class="research-mode">research mode</span>
{% endcall %}
{% elif not item['restricted'] %}
{% call field(status='error') %}
<span class="heading-medium">
Live
</span>
{% endcall %}
{% else %}
{{ text_field('') }}
{% endif %}
{% call field(align='right') %}
{{ big_number(item['sending'], smaller=True) }}
{% endcall %}
{% call field(align='right') %}
{{ big_number(item['delivered'], smaller=True) }}
{% endcall %}
{% call field(align='right', status='error' if 0 else '') %}
{{ big_number(item['failed'], smaller=True) }}
{% endcall %}
{% endfor %}
{% endcall %}
{% endmacro %}

View File

@@ -6,7 +6,11 @@
{% from "components/table.html" import list_table, field, text_field, index_field, index_field_heading %}
{% block page_title %}
Send text messages GOV.UK Notify
{% if request.args['help'] %}
Example text message
{% else %}
Send yourself a test
{% endif %} GOV.UK Notify
{% endblock %}
{% block maincolumn_content %}

View File

@@ -11,24 +11,7 @@
<h1 class="heading-large">Settings</h1>
{% if current_service.restricted %}
{% call banner_wrapper(type='warning') %}
<h2 class="heading-medium">Your service is in trial mode</h2>
<ul class='list list-bullet'>
<li>you can only send messages to yourself</li>
<li>you can add people to your team, then you can send messages to them too</li>
<li>you can only send 50 messages per day</li>
</ul>
<p>
To remove these restrictions
<a href="{{ url_for('.service_request_to_go_live', service_id=current_service.id) }}">request to go live</a>.
</p>
{% endcall %}
{% endif %}
<div class="bottom-gutter-2">
<div class="bottom-gutter-3-2">
{% call mapping_table(
caption='Settings',
@@ -57,6 +40,34 @@
{% endcall %}
</div>
{% if current_service.restricted %}
<h2 class="heading-medium">Your service is in trial mode</h2>
<ul class='list list-bullet'>
<li>you can only send messages to yourself</li>
<li>you can add people to your team, then you can send messages to them too</li>
<li>you can only send 50 messages per day</li>
</ul>
<p>
To remove these restrictions
<a href="{{ url_for('.service_request_to_go_live', service_id=current_service.id) }}">request to go live</a>.
</p>
{% else %}
<h2 class="heading-medium">Your service is live</h2>
<p>
You can send up to
{{ "{:,}".format(current_service.message_limit) }} messages
per day.
</p>
<p>
Problems or comments?
<a href="{{ url_for('main.feedback') }}">Give feedback</a>.
</p>
{% endif %}
{% if current_user.has_permissions([], admin_override=True) %}
<h2 class="heading-medium">Platform admin settings</h2>

View File

@@ -1,5 +1,6 @@
{% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/banner.html" import banner_wrapper %}
@@ -11,19 +12,10 @@
<h1 class="heading-large">Request to go live</h1>
{% call banner_wrapper(type='warning') %}
<h2 class="heading-medium">You must accept the GOV.UK&nbsp;Notify data sharing and financial agreement (Memorandum of Understanding) before we can process data for you.</h2>
<p>
<a href="{{ url_for('main.feedback') }}">Contact the Notify team</a> to get a copy of the agreement or to find out if your organisation has already accepted it.
</p>
{% endcall %}
<p>
Before you request to go live, make sure youve:
</p>
<ul class="list list-bullet">
<li>accepted our data sharing and financial agreement</li>
<ul class="list list-bullet bottom-gutter">
<li>read our <a href="{{ url_for('.terms') }}">terms of use</a></li>
<li>added <a href="{{ url_for('main.manage_users', service_id=current_service.id) }}">team members</a> to your account</li>
<li>
@@ -39,17 +31,26 @@
</ul>
<form method="post">
{{ textbox(form.channel, width='1-1') }}
{{ textbox(form.start_date, width='1-1') }}
{{ textbox(form.start_volume, width='1-1') }}
{{ textbox(form.peak_volume, width='1-1') }}
{{ textbox(form.upload_or_api, width='1-1') }}
<div class="form-group">
<p>We need permission to process your data before we can make your service live.</p>
{{ radios(form.mou, option_hints={
'no': 'Well send you a copy',
'dont know': 'Well check for you',
}) }}
</div>
<div class="form-group">
{{ radios(form.channel) }}
{{ textbox(form.start_date, width='1-1') }}
{{ textbox(form.start_volume, width='1-1', hint='For example, 1000 a month.') }}
{{ textbox(form.peak_volume, width='1-1', hint='For example, Messages will increase to 20,000 a month in January.') }}
{{ radios(form.upload_or_api) }}
</div>
<p>
Once youve completed the tasks needed to set up, well make your service live. Well do this within one working day.
</p>
<p>
By requesting to go live you are agreeing to our terms of use.
By requesting to go live youre agreeing to our <a href="{{ url_for('.terms') }}">terms of use</a>.
</p>
{{ page_footer('Request to go live') }}

View File

@@ -23,7 +23,7 @@ Terms of use GOV.UK Notify
{% endcall %}
<p>To accept these terms, you must be the service manager for your service. If youre not the service manager, youll need to invite them.</p>
<p>To accept these terms, you must be the service manager for your service.</p>
<section id="summary">
<h2 class="heading-medium">
@@ -34,25 +34,20 @@ Terms of use GOV.UK Notify
<ul class="list list-bullet">
<li><a href="#we-agree-to-send-all-the-messages">send all the messages you pass to us</a></li>
<li><a href="#we-agree-to-keep-you-informed">keep you informed about the performance of GOV.UK Notify</a></li>
<li><a href="#we-agree-to-keep-your-data-secure">keep your data secure</a></li>
<li><a href="#we-agree-to-give-you-three-months-notice-if-we-change-these-terms">give you three months notice if we change these terms</a></li>
<li><a href="#we-agree-to-give-you-one-months-notice">give you one months notice if we change these terms</a></li>
</ul>
<p>You agree:</p>
<ul class="list list-bullet">
<li><a href="#you-agree-not-to-compromise-our-security">not to compromise the security of GOV.UK Notify</a></li>
<li><a href="#you-agree-not-to-send-marketing">not to use GOV.UK Notify to send marketing messages</a></li>
<li><a href="#you-agree-not-to-send-unsolicited">not to use GOV.UK Notify to send unsolicited messages</a></li>
<li><a href="#you-agree-to-send-messages-consistent-with-our-guidelines">to send messages consistent with our design patterns, style guide and information security principles</a></li>
<li><a href="#you-agree-to-use-delivery-data-to-improve">to use GOV.UK delivery data to continuously improve the quality of your contact data</a></li>
</ul>
<p>Before you can send real messages:</p>
<ul class="list list-bullet">
<li><a href="#you-must-tell-us-how-many-text-messages-emails-and-letters-you-plan-to-send">you must tell us approximately how many text messages, emails and letters you plan to send</a></li>
<li><a href="#we-will-check-your-templates-before-you-can-go-live">we will check the messages you plan to send to make sure they meet our guidelines</a></li>
</ul>
</section>
<section id="our-side">
@@ -64,37 +59,37 @@ Terms of use GOV.UK Notify
We agree to send all the messages you pass to us
</h3>
<p>We will send all the messages you pass to us, as long as they meet our guidelines.</p>
<p>Well send all the messages you pass to us, as long as they meet our guidelines.</p>
<p>We endeavour to provide continuous uptime for both accepting messages and sending them.</p>
<p>We aim to provide a continuous service so you can use GOV.UK Notify 24 hours a day, 365 days a year.</p>
<p>Weve made sure that GOV.UK Notify can handle large volumes of messages. For email and text messages we have several delivery providers concurrently integrated. This provides GOV.UK Notify with real-time failover capability.</p>
<p>Weve made sure that GOV.UK Notify can handle large volumes of messages. For text messages we use multiple delivery providers at any one time. If a providers service fails, GOV.UK Notify will automatically switch to a different provider.</p>
<p>GOV.UK Notify is supported 24/7 for high-priority issues. We provide a ticketing system and escalation routes for service teams to address incidents.</p>
<h3 class="heading-small" id="we-agree-to-keep-you-informed">
We agree to keep you informed about the performance of GOV.UK Notify
</h3>
<p>Youll be able to see how our service is performing on our <a href="https://status.notifications.service.gov.uk">status page</a>.</p>
<p>Youll be able to see how the service is performing on our <a href="https://status.notifications.service.gov.uk">status page</a>.</p>
<p>We have a ticketing system and escalation routes to address incidents. We also provide 24 hour support for high-priority issues.</p>
<p>We also have a <a href="https://ukgovernmentdigital.slack.com/messages/govuk-notify">chat room</a> for talking to the GOV.UK Notify team. We are available to discuss your needs, and to see how Notify is working for you.</p>
<h3 class="heading-small" id="we-agree-to-keep-your-data-secure">
We agree to keep your data secure
</h3>
<p>GOV.UK Notify (as a whole, including subcontractors) currently store personal data for up to 1 year, and non-personal data indefinitely.</p>
<p>GOV.UK Notify has been through an information assurance process to assess information risks, to determine appropriate treatments for those risks and to obtain risk acceptance from the Cabinet Office Senior Information Risk Officer (SIRO). This work includes the completion of a Privacy Impact Assessment to ensure compliance with the Data Protection Act.</p>
<p>We do not conduct, or enable, analysis of when the same recipient (mobile number, email or postal address) is contacted by multiple Government organisations. We may do so if required by law enforcement.</p>
<p>We maintain appropriate technical and organisational measures to protect data. We make sure our subcontractors follow the same procedures.</p>
<p>GOV.UK Notify has been through an information assurance process to assess information risks, to determine appropriate treatments for those risks and to obtain risk acceptance from the Cabinet Office Senior Information Risk Officer (SIRO). This work includes the completion of a privacy impact assessment to ensure compliance with the Data Protection Act.</p>
<p>Cabinet Office act as data processor, as parent organisation of GOV.UK Notify. Your organisation remains the data controller.</p>
<p>Well never transfer or store data on servers outside of the European Economic Area.</p>
<p><a href="{{ url_for('main.feedback') }}">Contact us</a> if you want more information about our approach to data protection and information risk management.</p>
<h3 class="heading-small" id="we-agree-to-give-you-three-months-notice-if-we-change-these-terms">
We agree to give you three months notice if we change these terms
<h3 class="heading-small" id="we-agree-to-give-you-one-months-notice">
We agree to give you one months notice if we change these terms
</h3>
<p>Well email you if you need to change these terms. Well tell you clearly what is changing and when the change will come into effect.</p>
<p>Well email to tell you what is changing and when the change will come into effect.</p>
<p>This includes when any of our email, text message or postal providers change.</p>
@@ -115,53 +110,51 @@ Terms of use GOV.UK Notify
<p>You must follow industry best practices for keeping your API keys secure.</p>
<p>You must ensure you have obtained correct levels of consent - both to send messages but also for how data is shared in order to do so.</p>
<p>You must ensure you have obtained correct levels of consent - both to send messages but also for how data is shared, stored, and processed in order to do so.</p>
<p>You must not perform any load testing on GOV.UK Notify, since weve already done it.</p>
<h3 class="heading-small" id="you-agree-not-to-send-marketing">
You agree not to use GOV.UK Notify to send marketing messages
<h3 class="heading-small" id="you-agree-not-to-send-unsolicited">
You agree not to use GOV.UK Notify to send unsolicited messages
</h3>
<p>GOV.UK Notify is for sending transactional messages.</p>
<p>GOV.UK Notify is for sending transactional messages and subscription based alerts or reminders.</p>
<p>Transactional messages relate directly to something the user did. For example:</p>
<ul class="list list-bullet">
<li>The user completed a transaction, you send them a confirmation email</li>
<li>The user got an MOT a year ago, you remind them that its about to expire</li>
<li>The user signed up for email alerts, you send them email alerts</li>
<li>they completed a transaction, and youre sending them a confirmation email</li>
<li>they paid for an annual service a year ago, and you're reminding them that its about to expire</li>
<li>their application has been approved, and you're sending them a text message to let them know</li>
</ul>
<p>You dont need to ask permission to send messages that directly relate to a transaction. By using a transaction, a user is implicitly agreeing to receive messages about that transaction.</p>
<p>You dont need to ask permission to send messages that directly relate to a transaction. By making a transaction and providing their contact details, a user is implicitly agreeing to receive messages about that transaction.</p>
<p>Marketing messages dont relate directly to something the user did. For example:</p>
<p>Subscription based messages relate to something a user has explicitly asked to be updated with. For example:</p>
<ul class="list list-bullet">
<li>Telling users about your webinar</li>
<li>Sending users government advice</li>
<li>Continuing to update someone about a service they no longer use</li>
<li>they subscribed to travel advice alerts</li>
<li>they asked to be updated when guidance was updated</li>
<li>they opted in for information about new procurement frameworks</li>
</ul>
<p>You must agree not to use GOV.UK Notify to send marketing messages.</p>
<p>All subscription based messages must, by law, contain a way for users to unsubscribe.</p>
<p>If you do use GOV.UK Notify to send marketing messages, we may refuse to accept further messages for delivery.</p>
<p>If you do use GOV.UK Notify to send unsolicited messages, we may refuse to accept further messages for delivery.</p>
<h3 class="heading-small" id="you-agree-to-send-messages-consistent-with-our-guidelines">
You agree to send messages consistent with our design patterns, style guide and information security guidelines
</h3>
<p>Your messages must follow our <a href="https://designpatterns.hackpad.com/Notifications-5vuitmNqIjZ" rel="external">design patterns</a>, <a href="https://www.gov.uk/topic/government-digital-guidance/content-publishing" rel="external">style guide</a> and <a href="https://docs.google.com/document/d/15-OjaEqDBy31uDU7nLZCpYIQOnzSCJR63-cp3cQI9G8" rel="external">information security guidelines</a>.</p>
<p>Your messages must follow our <a href="https://designpatterns.hackpad.com/Notifications-5vuitmNqIjZ" rel="external">design patterns</a>, <a href="https://www.gov.uk/topic/government-digital-guidance/content-publishing" rel="external">style guide</a> and <a href="{{ url_for('.information_security') }}">information security guidelines</a>.</p>
<p>Your messages must not contain any personal, or otherwise sensitive, information.</p>
<p>Your messages must not contain any personally or commercially sensitive information.</p>
<h3 class="heading-small" id="you-agree-to-use-delivery-data-to-improve">
You agree to use GOV.UK Notify delivery data to continuously improve the quality of your contact data
</h3>
<p>When you send messages through GOV.UK Notify, we provide feedback on the status of every text message, email and letter.</p>
<p>When you send messages through GOV.UK Notify, we provide feedback on the status of every text message, email and letter you send.</p>
<p>You agree to use our delivery data to check (and potentially remove) bounced email addresses, mobile numbers and postal addresses from your database.</p>
<p>You agree to use our delivery data to check (and potentially remove) bounced email addresses, mobile numbers, and postal addresses from your database.</p>
<p>You agree to ensure your users personal data is kept accurate and up to date, in line with Data Protection Act principles.</p>
@@ -169,36 +162,6 @@ Terms of use GOV.UK Notify
</section>
<section id="requesting-to-go-live">
<h2 class="heading-medium">
Requesting to go live
</h2>
<p>Before you can send real messages:</p>
<ul class="list list-bullet">
<li>you must tell us approximately how many text messages, emails and letters you plan to send</li>
<li>you must ensure you have obtained consent to both send messages themselves, but also share data in order to do so</li>
<li>your organisation needs to have accepted the GOV.UK Notify data sharing and financial agreement (Memorandum of Understanding)</li>
<li>if you plan to send more than 250,000 text messages per year or any number of letters, your organisation must agree to pay any costs you run up using GOV.UK Notify</li>
<li>we will check the messages you plan to send to make sure they meet our guidelines</li>
</ul>
<h3 class="heading-small" id="you-must-tell-us-how-many-text-messages-emails-and-letters-you-plan-to-send">
You must tell us how many text messages, emails and letters you plan to send
</h3>
<p>You must estimate how many text messages, emails and letters you plan to send each year, including any spikes or seasonal variation.</p>
<p>We will make sure GOV.UK Notify is easily able to handle your estimated sending volume.</p>
<h3 class="heading-small" id="we-will-check-your-templates-before-you-can-go-live">
Well check your templates before you can go live
</h3>
<p>Well check your templates to make sure they are transactional, not marketing, and follow our <a href="https://designpatterns.hackpad.com/Notifications-5vuitmNqIjZ" rel="external">design patterns</a>, <a href="https://www.gov.uk/topic/government-digital-guidance/content-publishing" rel="external">style guide</a> and <a href="https://docs.google.com/document/d/15-OjaEqDBy31uDU7nLZCpYIQOnzSCJR63-cp3cQI9G8" rel="external">information security guidelines</a>.</p>
</section>
<section id="leaving-gov-uk-notify">
<h2 class="heading-medium">
Leaving GOV.UK Notify
@@ -206,7 +169,7 @@ Terms of use GOV.UK Notify
<p>You can remove your service from GOV.UK Notify at any time. <a href="{{ url_for('main.feedback') }}">Contact us</a> and well delete your account.</p>
<p>Any data that you have processed through GOV.UK Notify will be deleted as part of the existing data deletion processes.</p>
<p>Any data that you have already processed through GOV.UK Notify will be deleted as part of the existing data deletion processes and data retention periods.</p>
</section>