forgejo/models/migrations
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
..
base Replace fmt.Sprintf with hex.EncodeToString () 2022-11-28 11:19:18 +00:00
fixtures Move migration test fixtures to the correct directories () 2022-11-23 18:24:55 +08:00
v1_6 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_7 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_8 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_9 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_10 Add API management for issue/pull and comment attachments () 2022-12-09 14:35:56 +08:00
v1_11 Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
v1_12 Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
v1_13 Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
v1_14 Replace fmt.Sprintf with hex.EncodeToString () 2022-11-28 11:19:18 +00:00
v1_15 Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
v1_16 Implement FSFE REUSE for golang files () 2022-11-27 18:20:29 +00:00
v1_17 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_18 Update go dev dependencies () 2022-12-08 16:21:37 +08:00
v1_19 Support scoped access tokens () 2023-01-17 15:46:03 -06:00
migrations.go Support scoped access tokens () 2023-01-17 15:46:03 -06:00