Commit Graph

8035 Commits

Author SHA1 Message Date
Chris Hill-Scott
3da9e84ece Enforce order of permissions decorators
At the moment we mostly have `user_has_permissions` execute first. It
shouldn’t matter, but it feels right for us to check that a user is
logged in before we check their permissions to a service. Otherwise a
malicious user could (maybe) check if a service ID belongs to a real
service, and go on to do something malicious with that information.

This commit adds some extra test code to enforce that the order is
always the same.

N.B. decorators in Python execute from closest to furthest (from the
line on which the function is defined).
2019-07-03 09:54:17 +01:00
Chris Hill-Scott
91f2da8b68 Ensure all service route have permission decorators
We accidentally miss these sometimes. This code adds a test which
inspects the code to automatically check that any function which:
- handles a route
- accepts a service_id

For each function it checks that each of these routes have the
permissions decorator we’d expect.

Most of the introspection/AST code is adapted from here:
https://mvdwoord.github.io/exploration/2017/08/18/ast_explore.html
2019-07-03 09:47:20 +01:00
Chris Hill-Scott
14e9d763f1 Merge pull request #3039 from alphagov/quis-patch-2
Fix hard coded organisation name
2019-07-02 17:35:21 +01:00
Chris Hill-Scott
1f02a2d3ab Determine agreement by service not user’s org
A user might not have a guessable organisation type, even if the service
they’re working on does have an organisation set. This can happen for
users with @nhs.net email addresses, for example.
2019-07-02 17:22:36 +01:00
Chris Hill-Scott
5368ddabbc Fix hard coded organisation name
😳
2019-07-02 16:46:23 +01:00
Rebecca Law
3fc072af09 Merge pull request #3037 from alphagov/fix-org-invite
Fix a bug with inviting existing users to an organisation.
2019-06-28 11:06:52 +01:00
Chris Hill-Scott
6026ce3f8d Refactor model to put add_to… methods on user
An invited user can’t be added to an organisation or service, only a
real user can. So the methods to do this should be on the user model,
and take the details of the invite as arguments.
2019-06-27 15:48:29 +01:00
Rebecca Law
d344bc7006 Fix a bug with inviting existing users to an organisation.
The method to add the user to the organisation was missing the user id. This PR fixes that.
2019-06-27 15:34:23 +01:00
Chris Hill-Scott
305920733a Merge pull request #3019 from alphagov/sign-online
Allow online acceptance of the contract/memorandum of understanding
2019-06-27 15:26:41 +01:00
Chris Hill-Scott
fa5f3945bf Direct users to contact us if crown status unknown
If we’re not sure whether a user belongs to a crown organisation or not
we want to fix that before.

This is a last-ditch fallback because we shouldn’t be adding new
organisations without also setting their crown status.
2019-06-27 14:46:58 +01:00
Chris Hill-Scott
c260816213 Merge pull request #3027 from alphagov/add-permissions-to-missing-page
Fix a bug were the user_has_permission.
2019-06-27 12:40:47 +01:00
Rebecca Law
21c23c276f Fix a bug were the user_has_permission.
This is an immediate fix to add the permission checks to the callback page.
However, we have a plan to add a unit test to check for permission introspectively for all routes that have service_id.
2019-06-27 12:20:58 +01:00
Katie Smith
149003c52c Merge pull request #3022 from alphagov/dont-show-org-🍞crumbs-in-trial-mode
Don't show org breadcrumbs for trial mode services
2019-06-26 10:22:18 +01:00
Katie Smith
458b37d0aa Merge pull request #3025 from alphagov/bump-utils
Bump utils to add alt text to email branding
2019-06-26 10:22:10 +01:00
Katie Smith
a9ff4b1d48 Bump utils to add alt text to email branding
Utils 33.0.0 adds alt text to email branding - the HTMLEmailTemplate now
initializes slightly differently as a result (with both `branding_name`
and `branding_text`).
2019-06-25 16:56:45 +01:00
Katie Smith
f3ff7ee84d Don't show org breadcrumbs for trial mode services
Platform admin users can still see the organisation breadcrumbs for
trial mode services, but others uses can only see organisation
breadcrumbs for live services.
2019-06-20 16:58:53 +01:00
Chris Hill-Scott
0dddd0f5dc Merge pull request #3020 from alphagov/org-view-of-service-pages
Allow organisation team members to see team and usage
2019-06-20 15:53:36 +01:00
Chris Hill-Scott
e6733d7e24 Link to usage, not dashboard
Organisation team members only have access to the dashboard if they’re
also a member of that service.

They always have access to the usage page, so let’s link there instead.
2019-06-20 15:38:16 +01:00
Chris Hill-Scott
873272160c Update content on invite page to reflect changes
What org team members can see has changed slightly, so we should update
the hint text accordingly.
2019-06-20 15:38:09 +01:00
Chris Hill-Scott
afedf431e0 Link to all services from organisation
Because a member of the organisation can now see some pages for any live
service they should be able to click into each one.
2019-06-20 15:38:02 +01:00
Chris Hill-Scott
3968d5b766 Allow org team members to see team and usage
Organisation team members will be ultimately interested in the detailed
usage of each service, but shouldn't necessarily have access to the
personal data of that services users.

So we should allow these organisation team members to navigate to live
services usage page from the organisation page. They may need to contact
the team so they should also be able to view the team members page.

So they'll then see just usage and team members pages.

If they are actually a team member of the service they're viewing, then
they'll see the full range of options as usual.

This commit implement the above by adding an extra flag to the
`user.has_permissions` decorator which allows certain pages to be marked
as viewable by an organisation user. The default (for all other existing
pages) is that organisation users don’t have permission.
2019-06-20 15:37:52 +01:00
Chris Hill-Scott
31afd65e71 Refactor permissions checking to use methods
It’s a bit more concise to use these methods, rather than access the
lists directly.

And because it’s easier to read it will make later refactoring less
bothersome.
2019-06-20 14:32:08 +01:00
Chris Hill-Scott
bd697462a2 Merge pull request #3021 from alphagov/breadcrumbs
Show organisation breadcrumbs
2019-06-20 14:31:30 +01:00
Katie Smith
5f2c869a1c Show organisation breadcrumbs
Added a breadcrumb link to a service's organisation to the
withnav_template. This will only show if a service has an organisation
and the current user is also a member of that org, or the current user
is a platform admin user.

Also removed a couple of unused fixtures from the client_request
fixture.
2019-06-20 12:11:13 +01:00
Chris Hill-Scott
e3e461f340 Merge pull request #3016 from alphagov/pyup-scheduled-update-2019-06-17
Scheduled weekly dependency update for week 24
2019-06-19 14:16:45 +01:00
Chris Hill-Scott
9ff33df61d Freeze requirements 2019-06-19 13:35:12 +01:00
pyup-bot
32e2abd59c Update pyexcel-io from 0.5.17 to 0.5.18 2019-06-19 13:32:57 +01:00
pyup-bot
29f56aeca9 Update pyexcel from 0.5.13 to 0.5.14 2019-06-19 13:32:56 +01:00
Chris Hill-Scott
02566c4381 Merge pull request #3018 from alphagov/fixes-for-check-spreadsheet-page
Fixes for check spreadsheet page
2019-06-19 13:32:28 +01:00
Chris Hill-Scott
e1c9464228 Merge pull request #2998 from alphagov/pyup-scheduled-update-2019-06-03
Scheduled weekly dependency update for week 22
2019-06-19 13:32:04 +01:00
Chris Hill-Scott
174064c30a Relabel checklist step to ‘accept’
There’s no signature involved any more.
2019-06-19 13:21:20 +01:00
Chris Hill-Scott
b4c81f8960 Add progressive enhancement
When someone selects that they are accepting the agreement on behalf of
someone else then they need to provide that person’s details. Otherwise
they shouldn’t care about these extra fields.

This commit uses the progressive disclosure pattern from the GOV.UK
Frontend Toolkit to hide the additional fields unless someone selects
the relevant radio button.
2019-06-19 13:19:51 +01:00
Chris Hill-Scott
0728d9b4fb Add validation for agreement accepted on behalf of
If the user has selected that they are accepting the agreement on behalf
of someone else then we need to make the they provide that person’s
details.

If they’ve selected that they are accepting the agreement themselves
then we have to ignore what they might have put in the ‘on behalf of
boxes’ (for example if they filled them out but then changed their
mind).
2019-06-19 13:19:50 +01:00
Chris Hill-Scott
eb3f9aad2a Add pages to let users accept the agreement online
At the moment, the process for accepting the data sharing and financial
agreement is:

1. download a pdf
* print it out
* get someone to sign it
* scan it
* email it back to us
* we rename the file and save it in Google Drive
* we then update the organisation to say the MOU is signed
* sometimes we also:
 * print it out and get it counter-signed
 * scan it again
 * email it back to the service

Let's not do that any more.

When the first service for an organisation that doesn't have the
agreement in place is in the process of going live, then they should
be able to accept the agreement online as part of the go live flow. This
commit adds the pages that let someone do that.

Where the checklist shows the agreement as **[not completed]** then
they can follow a link where they can download it (as happens now).
From here, they should then also be able to provide some info to accept
it. The info that we need is:

**Version** – because we version the agreements occasionally, we need to
know which version they are accepting.  It may not be the latest one if
they downloaded it a while ago and it took time to be signed off

**Who is accepting the agreement** – this will often be someone in the
finance team, and not necessarily a team member, so we should let the
person either accept as themselves, or on behalf of someone else. If
it's on behalf of someone else we need to the name and email address of
that person so we have that on record. Obvs if it's them accepting it
themselves, we have that already (so we just store their user ID and
not their name or email address).

We then replay the collected info back in a sort of legally
binding kind of way pulling in the organisation name too. The wording
we’re using is inspired by what GOV.UK Pay have. Then there’s a big
green button they can click to accept the agreement, which stores their
user ID and and timestamp.
2019-06-19 13:14:02 +01:00
Chris Hill-Scott
89cf4904fe Merge pull request #3012 from alphagov/use-new-orgs-and-services-fields
Use new organisation and services fields
2019-06-18 10:51:15 +01:00
Chris Hill-Scott
772066164c Only print the id attribute if it’s a string
If it’s something weird like an instance of a Python object let’s ignore
it (else we get invalid HTML like
`id='<notifications_utils.columns.Cell object at 0x1126f4e80>'`).
2019-06-17 17:09:45 +01:00
Chris Hill-Scott
14225027d2 Fix incorrect argument name in test
This test wasn’t checking the redirect because the argument name was
missing the leading underscore.
2019-06-17 16:53:18 +01:00
Chris Hill-Scott
c41189db22 Merge pull request #3017 from alphagov/fix-rendering-scrollable-tables
Fix rendering of scrollable tables
2019-06-17 16:35:03 +01:00
Chris Hill-Scott
1a3df7039f Fix rendering of scrollable tables
The scrollable tables code styles some of the cells in the target table
by looking for the `table-field-center-aligned` class.

This class was renamed in 0512f40ad3

This commit updates the scrollable tables code to refer to the new
classname, which means that things should line up properly when drawing
the table.
2019-06-17 16:15:34 +01:00
Chris Hill-Scott
290e111810 Stop making multiple API calls to get_organisation
The count of live services is coming back from the `/organisations`
response. We don’t need to get each organisation individually now.
2019-06-17 16:14:25 +01:00
Chris Hill-Scott
e6304fe10d Add count of live services to organisation list
This is useful information that we might as well return now we have it.
2019-06-17 16:04:48 +01:00
Chris Hill-Scott
913095fe60 Wrap a model around list of all organisations 2019-06-17 16:00:59 +01:00
Chris Hill-Scott
0aea038d51 Use new fields for getting orgs and services
Uses https://github.com/alphagov/notifications-api/pull/2539 to reduce
the number of API calls we make.
2019-06-17 15:56:59 +01:00
Chris Hill-Scott
da29d722f9 Merge pull request #2983 from alphagov/add-js-tests-for-fullscreen-table
Add js tests for fullscreen table
2019-06-17 10:00:53 +01:00
Chris Hill-Scott
cf3e9302a0 Merge pull request #3015 from alphagov/optional-platform-admin
add option to suppress platform admin temporarily
2019-06-17 10:00:45 +01:00
Chris Hill-Scott
faaa812379 Merge pull request #3013 from alphagov/org-client-refactor
Wrap get org methods in class method on model
2019-06-14 16:56:02 +01:00
Chris Hill-Scott
082349e68e Merge pull request #3014 from alphagov/cache-organisations
Cache organisations, not just domains in Redis
2019-06-14 16:55:53 +01:00
Chris Hill-Scott
08fe6865bd Merge pull request #2944 from alphagov/allow-replace-revoked-key
Allow replacing a revoked key
2019-06-14 16:55:45 +01:00
Leo Hemsted
d752a6335f make sure tests all populate the platform admin field
it's always returned by the API
2019-06-14 15:14:00 +01:00
Leo Hemsted
c724f84c23 change wording of platform admin toggle to positive rather than negative
CHS Approved Wording 👍

also rename suppress_platform_admin -> disable_platform_admin_view in
the backend, as suppress is a kinda weird word.
2019-06-14 15:13:56 +01:00