Commit Graph

172 Commits

Author SHA1 Message Date
Min RK
8cac83fc96 add delete scopes for users, groups, servers
e.g. cull-idle services do not need permission to start servers in order to be able to stop them
2021-09-27 12:43:56 +02:00
Erik Sundell
bc71ad6d73 Apply suggestions from code review
Co-authored-by: Carol Willing <carolcode@willingconsulting.com>
2021-08-26 16:23:38 +02:00
Erik Sundell
d6c48b15fe pyupgrade: run pyupgrade --py36-plus and black on all but tests 2021-08-26 16:23:38 +02:00
Min RK
50219764a0 make order_by explicit in list endpoints
when implicit, ordering is not guaranteed (at least with postgres)
2021-08-24 13:56:11 +02:00
Min RK
7f480445f6 warn about truncated replies without pagination 2021-08-24 13:56:11 +02:00
Min RK
fd644476a7 add opt-in model for paginated list results
use `Accept: application/jupyterhub-pagination+json`  to opt-in to the new response format

With a paginated API, we need to return pagination info (next page arguments, whether a next page exists, etc.),
but a simple list response doesn't give a good way to do that.

We can follow precedents and use a dict with an `items` field for the actual items,
and a `_pagination` field for info about pagination, including offset, limit, url for the next request
2021-08-24 13:56:11 +02:00
Min RK
8603723dbb add list:users|groups|services scopes
and govern GET /users|groups|services endpoints with these

Greatly simplifies filtering and pagination,
because these filters can be expressed in db filters,
unlike the potentially complex `read:users`.

Now the query itself will never return a model that should be excluded.

While writing the tests, I added more cleanup between tests.
We now ensure cleanup of all users and groups after each test,
which required updating some group tests which relied on this state leaking
2021-08-24 13:56:11 +02:00
Min RK
e98890b9ca ensure admin requests for missing users 404 2021-08-03 20:23:12 +02:00
0mar
7a3b237bb3 Refactored scope names and updated docs to reflect this 2021-06-15 13:00:15 +02:00
0mar
c92d39659b Merge branch 'rbac' into read_roles 2021-06-08 15:37:16 +02:00
0mar
32d1e3cbea Merge branch 'rbac' into read_roles 2021-06-08 15:31:30 +02:00
0mar
2ac1cfe4ac finegrained service model access 2021-06-08 14:01:04 +02:00
Min RK
e2076e6c91 implement access scopes
- access:services for services
- access:users:servers for servers
- tokens automatically have access to their issuing client (if their owner does, too)
- Check access scope in HubAuth integration
2021-06-07 14:00:50 +02:00
IvanaH8
335320fd14 Rename raw_scopes attr for base handler to expanded_scopes 2021-06-04 09:26:48 +02:00
IvanaH8
e6845a68f5 Clarify some function names in rbac utils 2021-06-04 09:26:48 +02:00
Min RK
e7d249bb3d Sync with master 2021-05-11 10:52:46 +02:00
Min RK
863b4c7d50 Deprecate and remove some old auth bits
- remove long-deprecated `POST /api/authorizations/token` for creating tokens
- deprecate but do not remove `GET /api/authorizations/token/:token` in favor of GET /api/user
- remove shared-cookie auth for services from HubAuth, rely on OAuth for browser-auth instead
- use `/hub/api/user` to resolve user instead of `/authorizations/token` which is now deprecated
2021-05-05 14:07:14 +02:00
Min RK
9f81ff5fb2 define Spawner.delete_forever on base Spawner
instead of on the test class

and fix the logic for when it is called a bit:

- call on *all* Spawners, not just the default
- call on named server deletion when remove=True
2021-05-05 12:03:09 +02:00
Min RK
eb71e39c77 Merge pull request #3435 from 0mar/token_handler
Fixed scope checking in UserTokenListAPIHandler
2021-04-22 13:52:13 +02:00
Min RK
ad090560d0 Merge pull request #3366 from IvanaH8/rbac-docs
[rbac] Add RBAC documentation with myst-parser
2021-04-22 13:50:58 +02:00
Nathan Barber
ab130309ec Add get_api_pagination method to base handler, revert group.users pagination 2021-04-21 09:57:30 -04:00
0mar
103c6a406a Changed error code of UserTokenListAPIHandler back to 403 2021-04-21 09:43:24 +02:00
0mar
399203e5d3 Fixed scope checking in UserTokenListAPIHandler 2021-04-20 14:55:36 +02:00
0mar
ef1351b441 Added todo for future PR 2021-04-20 11:04:04 +02:00
Nathan Barber
3c328385a4 Add default limit and max limit config vars 2021-04-16 13:11:57 -04:00
IvanaH8
a6b9fb160e Resolve merge conflicts 2021-04-16 17:20:22 +02:00
0mar
46e2f72fa6 Test server start/stop 2021-04-16 14:54:04 +02:00
0mar
7544965145 Fixed server model, removed some auth decorators 2021-04-15 16:34:46 +02:00
Min RK
e504fa4bf5 resolve special scopes for self in 'self' handler
instead of `_resolve_scopes` on all requests
2021-04-13 13:23:53 +02:00
Min RK
0b56fd9e62 remove separate oauth tokens
- merge oauth token fields into APITokens
- create oauth client 'jupyterhub' which owns current API tokens
- db upgrade is currently to drop both token tables, and force recreation on next start
2021-04-13 13:23:45 +02:00
Nathan Barber
e72b13be3a Clean up offset/limit conditional 2021-04-09 17:14:13 -04:00
Nathan Barber
2fa331bd36 Paginate listing users and groups 2021-04-09 16:57:32 -04:00
0mar
d38460bfa9 Added tests and removed model flags 2021-04-08 14:52:01 +02:00
IvanaH8
f5bbe78dbd Resolve merge conflicts with rbac 2021-04-08 11:32:41 +02:00
0mar
5017ccc977 Merge branch 'roles_interface' into additional_scopes 2021-04-02 12:01:39 +02:00
0mar
71a5842ad2 Removed user model flags, scope-guarded server model with new scopes 2021-04-01 17:26:34 +02:00
0mar
db66443793 No more reinitialization of roles on each startup 2021-03-30 08:50:20 +02:00
0mar
1515747b1e Refactored role methods 2021-03-29 21:26:34 +02:00
0mar
c5c44f6dbe Replaced auth_state and server_state with scopes 2021-03-26 13:47:01 +01:00
0mar
9832a87ac4 Fixed some tests and unified scope read:user:name 2021-03-09 10:29:52 +01:00
IvanaH8
bc1e370d7d updated tech implementation section 2021-02-19 12:37:20 +01:00
0mar
de2e8ff355 Implemented vertical filtering in user method 2021-02-11 14:08:26 +01:00
Min RK
4dac580d3d Merge master into rbac 2021-01-27 12:39:02 +01:00
SHAHN3
9bd97db90b added try except, also changed to await and async 2021-01-21 16:21:18 -05:00
SHAHN3
8fcc4b48a5 removed await 2021-01-20 14:44:03 -05:00
SHAHN3
289dee5996 new method delete_forever 2021-01-20 14:34:32 -05:00
SHAHN3
c40b3a4ad6 reformatted code 2021-01-19 16:32:59 -05:00
SHAHN3
c7f1b89f6c delete user's PVC when delete user is called 2021-01-19 16:08:33 -05:00
Omar Richardson
662017f260 Refactored scope module. Implemented filter in *ListApiHandlers 2021-01-05 11:42:53 +01:00
Omar Richardson
82bebfaff2 Added unit tests and fixed bugs in scope filter 2021-01-04 22:44:23 +01:00