Age | Commit message (Collapse) | Author |
|
We are saving the client secret in an encrypted form, meaning we have to
verify that the CLIENT_SECRET that is provided is the same one as was
generated at registration in a different way.
Initially, I was doing a direct comparison, having saved the CLIENT_SECRET
value as unencrypted plain-text.
|
|
Add UI and code to enable the administrative user to register new OAuth2
clients that can access the API server.
|
|
* gn3/auth/authentication/oauth2/views.py: Remove endpoint
* gn3/auth/authorisation/users/admin/__init__.py: New admin module
* gn3/auth/authorisation/users/admin/ui.py: New admin module
* gn3/auth/authorisation/users/admin/views.py: New admin module
* gn3/auth/views.py: Use new admin module
* gn3/errors.py: Fix linting errors
* gn3/templates/login.html: New html template
* main.py: Fix linting errors
|
|
* docs/authentication_and_authorisation/oauth2_clients.md: New documentation
* gn3/auth/authentication/oauth2/server.py: Raise appropriate error if no
client is found.
* gn3/auth/authentication/oauth2/views.py: Handle exception in the case where
a UI should be presented to the user, rather than presenting the raw JSON
response to the user.
* gn3/errors.py: Handle any authlib OAuth2Error at the application's top-level
* gn3/templates/oauth2/oauth2_error.html: Handle any authlib OAuth2Error at
the application's top-level
|
|
A script to assign existing data not assigned to any group to publicly-visible
resources.
|
|
|
|
Enable users with the appropriate privileges to masquerade as other users by
providing an endpoint that provides a new token for the "masqueradee"
|
|
|
|
|
|
|
|
|
|
Also set default value for os.environ.get("GENENETWORK_FILES")
|
|
|
|
initialized (if the genofile was empty, for example)
|
|
Initialize samplelist variable
|
|
|
|
This is necessary in order to allow for editing the values of samples that don't currently have values
|
|
There's probably a better way to fix this query (it was previously returning each sample twice), but DISTINCT was the easiest way I could come up with
|
|
|
|
|
|
after the recent changes to the DB
|
|
|
|
|
|
|
|
Provide the user and resource_id information in each trait's authorisation
details to help with linking on the UI end.
|
|
Ensure the authorisation endpoint expects only JSON.
Add the user data to the response from the endpoint.
|
|
Enable renaming collections.
|
|
|
|
|
|
Add code to enable the importation/deletion of anonymous collections in the
active session to the authenticated user's collections.
|
|
|
|
Move the code to a new package.
Enable the creation of new collection by both authenticated and anonymous
users.
|
|
|
|
The code, as written previously had a subtle bug - if the user created a new
collection before they had tried accessing their list of collections, the
older code would not have migrated the older collections.
This commit fixes that by enabling the migration of older collections, whether
or not the user has created a collection with their new accounts.
|
|
Add an endpoint to list a user's collections. This only works for logged in
users.
|
|
Check only that the email format is correct, but don't bother with the
deliverability check during authentication. The deliverability check is done
at registration.
|
|
Implement the "Authorization Code Flow" for the authentication of users.
* gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py: query and
save the authorisation code.
* gn3/auth/authentication/oauth2/models/authorization_code.py: Implement the
`AuthorisationCode` model
* gn3/auth/authentication/oauth2/models/oauth2client.py: Fix typo
* gn3/auth/authentication/oauth2/server.py: Register the
`AuthorisationCodeGrant` grant with the server.
* gn3/auth/authentication/oauth2/views.py: Implement `/authorise` endpoint
* gn3/templates/base.html: New HTML Templates of authorisation UI
* gn3/templates/common-macros.html: New HTML Templates of authorisation UI
* gn3/templates/oauth2/authorise-user.html: New HTML Templates of
authorisation UI
* main.py: Allow both "code" and "token" response types.
|
|
With the assignment of `system:*` privileges to roles, we need to check for
their existence when doing authorisation.
This commit provides a hack for that, seeing as user groups (and the system
itself) are not treated as resources, and therefore the way to fetch the
privileges is not entirely consistent.
|
|
While creating new group roles, enable the listing of non-resource privileges,
e.g. `system:group:*` and `system:user:*` that the user has to allow for them
to be used in role creation.
|
|
|
|
|
|
|
|
|
|
Some roles should not be user-editable, and as such, we need to check before
allowing any edits on such roles. This commit makes that possible.
|
|
Previously, the `oauth2/data/authorisation` endpoint was returning hard-coded
values for the privileges assigned to the user for each resource. In this
change, we rework to return the actual privileges for the user.
|
|
|
|
|
|
During development, we need logging sometimes to help with troubleshooting
problems. This commit provides a module to help set up the logging in a
separate module from the app module.
|
|
|
|
|