forgejo/models
Chongyi Zheng de484e86bc
Support scoped access tokens ()
This PR adds the support for scopes of access tokens, mimicking the
design of GitHub OAuth scopes.

The changes of the core logic are in `models/auth` that `AccessToken`
struct will have a `Scope` field. The normalized (no duplication of
scope), comma-separated scope string will be stored in `access_token`
table in the database.
In `services/auth`, the scope will be stored in context, which will be
used by `reqToken` middleware in API calls. Only OAuth2 tokens will have
granular token scopes, while others like BasicAuth will default to scope
`all`.
A large amount of work happens in `routers/api/v1/api.go` and the
corresponding `tests/integration` tests, that is adding necessary scopes
to each of the API calls as they fit.


- [x] Add `Scope` field to `AccessToken`
- [x] Add access control to all API endpoints
- [x] Update frontend & backend for when creating tokens
- [x] Add a database migration for `scope` column (enable 'all' access
to past tokens)

I'm aiming to complete it before Gitea 1.19 release.

Fixes 
2023-01-17 15:46:03 -06:00
..
activities Always reuse transaction () 2023-01-08 09:34:58 +08:00
admin Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
asymkey Improve utils of slices () 2023-01-11 13:31:16 +08:00
auth Support scoped access tokens () 2023-01-17 15:46:03 -06:00
avatars Fix get system setting bug when enabled redis cache () 2023-01-02 00:06:52 +08:00
db some refactor about code comments () 2023-01-17 15:03:44 -06:00
fixtures Fix error when calculate the repository size () 2023-01-13 18:54:02 +00:00
git Add cron method to gc LFS MetaObjects () 2023-01-16 13:50:53 -06:00
issues some refactor about code comments () 2023-01-17 15:03:44 -06:00
migrations Support scoped access tokens () 2023-01-17 15:46:03 -06:00
organization Secrets storage with SecretKey encrypted () 2022-12-20 17:07:13 +08:00
packages Fix container blob mount () 2023-01-16 17:35:48 -05:00
perm Rename almost all Ctx functions () 2022-12-10 10:46:31 +08:00
project Always reuse transaction () 2023-01-08 09:34:58 +08:00
pull refactor some functions to support ctx as first parameter () 2022-12-03 10:48:26 +08:00
repo Fix Operator does not exist bug on explore page with ONLY_SHOW_RELEVANT_REPOS () 2023-01-16 11:25:22 +00:00
secret Secrets storage with SecretKey encrypted () 2022-12-20 17:07:13 +08:00
system Set disable_gravatar/enable_federated_avatar when offline mode is true () 2023-01-17 17:00:19 +02:00
unit Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
unittest Add support for incoming emails () 2023-01-14 23:57:10 +08:00
user Fix get system setting bug when enabled redis cache () 2023-01-02 00:06:52 +08:00
webhook Remove old HookEventType () 2023-01-06 19:49:14 +08:00
error.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
fixture_generation.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
fixture_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
main_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
migrate.go Check primary keys for all tables and drop ForeignReference () 2022-12-23 19:35:43 +08:00
migrate_test.go Check primary keys for all tables and drop ForeignReference () 2022-12-23 19:35:43 +08:00
org.go refactor some functions to support ctx as first parameter () 2022-12-03 10:48:26 +08:00
org_team.go Supports wildcard protected branch () 2023-01-16 16:00:22 +08:00
org_team_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
org_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
repo.go Secrets storage with SecretKey encrypted () 2022-12-20 17:07:13 +08:00
repo_collaboration.go refactor some functions to support ctx as first parameter () 2022-12-03 10:48:26 +08:00
repo_collaboration_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
repo_test.go Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
repo_transfer.go Always reuse transaction () 2023-01-08 09:34:58 +08:00
repo_transfer_test.go Rename almost all Ctx functions () 2022-12-10 10:46:31 +08:00
user.go Supports wildcard protected branch () 2023-01-16 16:00:22 +08:00