Commit Graph

181 Commits

Author SHA1 Message Date
Min RK
f5e4846cfa Backport PR #3874: Missing f prefix on f-strings fix
Fixes  3873

Signed-off-by: Min RK <benjaminrk@gmail.com>
2022-05-05 13:15:27 +02:00
Narek Amirbekian
b3f04e7c66 Add search bar for user name 2022-03-11 15:12:53 -08:00
Min RK
7861662e17 Replace failed spawners when starting new launch
Avoids leaving stale state when re-using a spawner that failed the last time it started

we keep failed spawners around to track their errors,
but we don't want to re-use them when it comes time to start a new launch.

adds User.get_spawner(server_name, replace_failed=True) to always get a non-failed Spawner
2022-03-07 14:03:48 +01:00
Min RK
f9fa21bfd7 relay custom messages in exception.jupyterhub_message in progress API
matches the message shown on the HTML spawn-failed page

For consistency, also support `jupyterhub_html_message` to populate the `html_message` field
2022-01-18 09:15:58 +01:00
Min RK
39f19aef49 add session_id to token model 2021-11-17 09:46:26 +01:00
Min RK
b25517efe8 Rename 'all' metascope to more descriptive 'inherit'
since it means 'inheriting' the owner's permissions

'all' prompted the question 'all of what, exactly?'

Additionally, fix some NameErrors that should have been KeyErrors
2021-10-27 16:00:21 +02:00
Min RK
b0c7df04ac raise 404 on admin attempt to spawn nonexistent user 2021-10-15 14:40:47 +02:00
josefgasewicz
1366911be6 Fixed tests & set status after writing json 2021-10-07 22:21:16 +01:00
Joe Gasewicz
fe276eac64 Update users.py
New user token returns 200 instead of 201 Fixes #3642
2021-10-07 16:31:23 +01:00
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