Commit Graph

13479 Commits

Author SHA1 Message Date
Ben Thorner
b4bd978289 Update content following review with Karl 2021-07-06 16:30:24 +01:00
karlchillmaid
eebcc2df36 Remove March to June section 2021-07-06 15:28:20 +01:00
Leo Hemsted
416b5c3e26 Merge pull request #3926 from alphagov/sign-in-bug
ensure user details are always in the session after entering password
2021-07-06 11:56:24 +01:00
karlchillmaid
cd6574c28d Change 'broadcasting' to 'sending' 2021-07-05 17:42:37 +01:00
karlchillmaid
4b198fdf72 Change 'cancel' to 'reject' 2021-07-05 17:22:35 +01:00
karlchillmaid
d90d0d632e Change 'cancel' to 'reject' 2021-07-05 17:21:57 +01:00
karlchillmaid
18800a9cec Change 'withdraw' to 'discard' 2021-07-05 17:11:26 +01:00
karlchillmaid
2cc1ccfd7e Change 'withdraw' to 'discard' 2021-07-05 17:10:35 +01:00
karlchillmaid
2b8a495dc7 Update preview button content 2021-07-05 16:50:49 +01:00
karlchillmaid
d7e2b0b783 Replace 'broadcast' and 'prepared' 2021-07-05 16:41:17 +01:00
karlchillmaid
60d8734f79 Replace use of 'broadcast' 2021-07-05 16:39:48 +01:00
karlchillmaid
d804ab747e Replace use of 'broadcast' 2021-07-05 16:38:46 +01:00
karlchillmaid
f910c91a9d Remove use of 'broadcast' 2021-07-05 16:23:55 +01:00
karlchillmaid
64b0fb769b Remove use of 'broadcast' 2021-07-05 16:23:25 +01:00
karlchillmaid
5ffb2a8594 Remove use of 'broadcast' 2021-07-05 16:22:47 +01:00
Chris Hill-Scott
960d2b8bf1 Merge pull request #3954 from alphagov/no-empty-state-choose-areas
Remove empty state step before choosing areas
2021-07-05 16:01:49 +01:00
karlchillmaid
4d2e769400 Replace use of 'broadcast' 2021-07-05 15:57:37 +01:00
karlchillmaid
72e83adb19 Replace use of 'broadcast' 2021-07-05 15:56:21 +01:00
Chris Hill-Scott
da97669674 Merge pull request #3941 from alphagov/use-custom-polygon-to-estimate-phones-in-bleed-area
Use `CustomBroadcastArea` to estimate number of phones in bleed area
2021-07-05 15:51:15 +01:00
Chris Hill-Scott
a0d6c153bf Add comment explaining phone counting strategy 2021-07-05 15:24:04 +01:00
Chris Hill-Scott
2cfd22b20c Remove empty state step before choosing areas
We had some kind of idea that having this empty page would introduce the
idea of choosing areas and reinforce that you are building up a list of
areas.

But since the journey is now so simple with the button to create an
alert directly on the dashboard page, maybe people don’t need this extra
orientation.
2021-07-05 14:33:02 +01:00
karlchillmaid
a8bd65254e Change previous to past 2021-07-05 13:49:36 +01:00
karlchillmaid
ff576555cf Change previous to past 2021-07-05 13:47:10 +01:00
karlchillmaid
dcc38b5619 Change previous to past 2021-07-05 13:46:04 +01:00
Leo Hemsted
74b5d8f3cd add test for when trying to sign in as another invited user 2021-07-02 18:11:53 +01:00
Ben Thorner
2355d1e0e6 Explain about text message prefixes when editing
Previously this lead to 2 support tickets because the user didn't
understand why their messages was being split into 2 fragments. We
tried modifying the message about charges, but that made it more
complicated. Adding a hint should hopefully be enough.
2021-07-02 16:25:45 +01:00
Chris Hill-Scott
5a378fe51f Use CustomBroadcastArea to estimate phones in bleed area
Our current assumption is that the bleed area has the same population
density as the broadcast area.

This is particularly naïve when:
- the bleed area overlaps the sea – no-one lives in the sea
- the broadcast area is a village and the bleed area is the surrounding
  countryside
- the broadcast area is adjacent to a densely populated area like a city

We can be smarter about this now that we have a way of determining the
number of phones in an arbitrary area, based on the known areas that we
have population data about.

Calculating the population in an overlap is a slightly more intensive
calculation. So we only doing it for areas which are smaller enough that
it doesn’t slow things down too much. For larger areas we still use the
more naïve algorithm.
2021-07-02 10:36:25 +01:00
Ben Thorner
256c840b46 Merge pull request #3948 from alphagov/send-upload-id
Send upload_id to Template Preview for logging
2021-07-01 12:22:13 +01:00
Ben Thorner
1f33924ceb Send upload_id to Template Preview for logging
This means we can include the anonymous ID for the file in the log
we have about Type3 fonts [1]. Currently, we have no way of tracing
manually uploaded files with this potential defect.

[1]: https://github.com/alphagov/notifications-template-preview/pull/557
2021-07-01 12:09:47 +01:00
Chris Hill-Scott
bcc494f0ec Merge pull request #3943 from alphagov/fix-invalid-geometries
Fix invalid polygons while importing geographic data
2021-06-30 16:19:29 +01:00
Ben Thorner
43afcd1064 Remove redundant restrictions for WebAuthn feature
Since the register and authentication APIs work in pairs, we can
just put the restrictions on the "begin" API. We weren't testing
the restrictions on the "complete" API anyway.

For authentication, it's also enough to check if the user has
WebAuthn as their auth type, as it's not a big deal if a user
continues to login with a security key indefinitely.
2021-06-30 16:19:12 +01:00
Ben Thorner
7fafc18fb3 Remove unnecessary restriction for 2FA WebAuthn
It should be enough to check the user has it set as their auth type.
Even if a user is no longer eligible to register a security key, it
should still be OK for them to continue using the feature.
2021-06-30 14:54:20 +01:00
Ben Thorner
aad017a184 Merge pull request #3927 from alphagov/webauthn
Webauthn bug fixes and permission tightening
2021-06-30 14:12:11 +01:00
Leo Hemsted
7b3751240c ensure user details are always in the session after entering password
We signal that we're mid-way through the sign-in flow by adding a
`user_details` dict to the session.

previously, we'd only put a user's details in the session in `User.sign_in`,
just before sending any 2fa prompt and redirecting to the two factor
pages.

However, we found a bug where a user with no session (eg, using a fresh
browser) tried to log in, but they had never clicked the link to
validate their email address when registering. Their user's state was
still in "pending", so we redirected to `main.resend_email_verification`
as intended - however, they didn't have anything in the session and the
resend page expected to get the email address to resend to out of that.

To be safe, as soon as we've confirmed the user has entered their
password correctly, lets save the session data at that point. That way
any redirects will be fine.
2021-06-29 18:13:25 +01:00
Leo Hemsted
71613dd942 remove old /two-factor endpoint and update test names
we redirect people to `/two-factor-sms` since #26ad20719
2021-06-29 16:19:24 +01:00
Leo Hemsted
c439cafd37 always create platform admin users with webauthn in tests 2021-06-29 16:19:22 +01:00
Leo Hemsted
126f9cf6be fix bug stopping editing of permissions of webauthn platform admins
We hide the radio field in the HTML for platform admins, as we don't
want anyone to be able to change their auth type. However, when the form
is validated, the form has a field called login_authentication that it
expects a value for. It silently fails as it complains that when the
user POSTed they didn't select a value for that radio field, but the
error message is on the radio fields that don't get displayed to the
user so they'd never know.

Fixing this is actually pretty hard.

We use this form in two places, one where we have a user to edit, one
where we are creating an invite from scratch. So sometimes we don't know
about a user's auth type. In addition, radio buttons are mandatory by
design, but now sometimes we don't just want to make it optional but
explicitly ignore the value being passed in? To solve this, remove the
field entirely from the form if the user is a platform admin. This means
that if the code in manage_users.py tries to access the
login_authentication value from the form, it'll error, but I think
that's okay to leave for now given we concede that this isn't a perfect
final solution.

The tests didn't flag this previously as they tried to set from sms_auth
(the default for `platform_admin_user`) TO email_auth or sms_auth. Also,
the diagnosis of this bug was confounded further by the fact that
`mock_get_users_by_service` sets what is returned by the API - the
service model then takes the IDs out of that response and calls
`User.get_user_by_id` for the matching ID (as in, the code only uses
get_users_by_service to ensure the user belongs to that service). This
means that we accidentally set the form editing the current user, as
when we log in we set `get_user_by_id` to return the user of our choice
2021-06-29 15:53:48 +01:00
Leo Hemsted
92b6885224 ensure webauthn page aborts if user isn't allowed 2021-06-29 15:53:48 +01:00
Rebecca Law
5534ecb5a4 Merge pull request #3939 from alphagov/check-daily-limit-for-csv-uploads
Check the daily limit get the daily notification_count from redis.
2021-06-29 14:41:22 +01:00
Ben Thorner
307f3a3b9a Merge pull request #3946 from alphagov/refactor-user-fixtures
DRY up user fixtures and factories
2021-06-29 09:58:10 +01:00
Rebecca Law
77c2aa9fd6 Stop passing in today_only for the get_service_statistics method.
We now only ever call it with False.
To remove it from the api call will require a change in the API so will do that at another time.
2021-06-29 07:33:40 +01:00
Ben Thorner
1806ff2721 DRY up fixtures to use their equivalent factory
It's unclear if we really need the factory functions, but for now
this avoids the fixture and the factory diverging.
2021-06-28 17:52:11 +01:00
Ben Thorner
91b28879f7 DRY up fixtures for service one users / admins
Note that, while it makes sense for most service one users to also
be in the organisation, this doesn't apply to caseworkers.
2021-06-28 17:45:19 +01:00
Ben Thorner
81cdc31e80 Refactor creating user fixture into one function
This removes *a lot* of duplication, in advance of adding another
fixture for a user with a WebAuthn auth type.
2021-06-28 17:25:36 +01:00
Chris Hill-Scott
b47d04fbf6 Check that the simplification process hasn’t introduced bad data
This is a good bit of future proofing against unintended mistakes in the
simplification code.
2021-06-24 18:28:33 +01:00
Chris Hill-Scott
72cdad14d9 Run app/broadcast_areas/create-broadcast-areas-db.py 2021-06-24 18:28:33 +01:00
Chris Hill-Scott
779ac74fc7 Manually remove a coordinate from Bathavon South
This is the only way I can think to stop this shape self-intersecting
without drastically changing its area (i.e. filling the hole in the
donut).

This is the only area in our library which is a genuine donut and
presents this problem
2021-06-24 18:28:21 +01:00
Chris Hill-Scott
62a2c524ab Fix invalid polygons while importing geographic data
Some of the polygons in our source data are invalid. An invalid polygon
is one that self intersects, in other words has a point which causes
the boundary of the shape to cross itself.

This doesn’t cause an exception until we try to perform certain
operations on one of these polygons, like intersecting them with another
polygon. This is why we haven’t spotted that they are invalid until now.

This commit adds checks so that as we import the polygons we make sure
they are valid.

If they are not valid, we can automatically fix them by just looking at
the exterior boundary of the shape, and ignore any holes created by
self intersection.
2021-06-24 18:10:50 +01:00
Ben Thorner
e7c1ce1869 Merge pull request #3938 from alphagov/save-original-pdf-uploads
Backup original precompiled uploads to S3
2021-06-24 12:43:40 +01:00
Ben Thorner
b3f48c1a84 Backup original precompiled uploads to S3
This continues the work from Template Preview [1], so that we have
a complete store of original PDFs to use for testing changes to it.

Previously we did store some originals, but these were only invalid
PDFs that had failed sanitisation; for valid PDFs, the "transient"
bucket only contains the sanitised versions, which the API deletes
/ moves when the notification is sent [2].

Since the notification is only created at a later stage [3], there's
no easy way to get the final name of the PDF we send to DVLA. Instead,
we use the "upload_id", which eventually becomes the notification ID
[4]. This should be enough to trace the file for specific debugging.

Note that we only want to store original PDFs if they're valid (and
virus free!), since there's no point testing changes with bad data.

[1]: https://github.com/alphagov/notifications-template-preview/pull/545
[2]: c44ec57c17/app/service/send_notification.py (L212)
[3]: 7930a53a58/app/main/views/uploads.py (L362)
[4]: 7930a53a58/app/main/views/uploads.py (L373)
2021-06-24 12:21:05 +01:00