forgejo/routers/api/v1/repo
oliverpool b6e81357bd
Add Webhook authorization header ()
_This is a different approach to , I took the liberty of adapting
some parts, see below_

## Context

In some cases, a weebhook endpoint requires some kind of authentication.
The usual way is by sending a static `Authorization` header, with a
given token. For instance:

- Matrix expects a `Bearer <token>` (already implemented, by storing the
header cleartext in the metadata - which is buggy on retry )
- TeamCity 
- Gitea instances 
- SourceHut https://man.sr.ht/graphql.md#authentication-strategies (this
is my actual personal need :)

## Proposed solution

Add a dedicated encrypt column to the webhook table (instead of storing
it as meta as proposed in ), so that it gets available for all
present and future hook types (especially the custom ones ).

This would also solve the buggy matrix retry .

As a first step, I would recommend focusing on the backend logic and
improve the frontend at a later stage. For now the UI is a simple
`Authorization` field (which could be later customized with `Bearer` and
`Basic` switches):


![2022-08-23-142911](https://user-images.githubusercontent.com/3864879/186162483-5b721504-eef5-4932-812e-eb96a68494cc.png)

The header name is hard-coded, since I couldn't fine any usecase
justifying otherwise.

## Questions

- What do you think of this approach? @justusbunsi @Gusted @silverwind 
- ~~How are the migrations generated? Do I have to manually create a new
file, or is there a command for that?~~
- ~~I started adding it to the API: should I complete it or should I
drop it? (I don't know how much the API is actually used)~~

## Done as well:

- add a migration for the existing matrix webhooks and remove the
`Authorization` logic there


_Closes #19872_

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Gusted <williamzijl7@hotmail.com>
Co-authored-by: delvh <dev.lh@web.de>
2022-11-03 20:23:20 +02:00
..
blob.go RepoAssignment ensure to close before overwrite () 2022-04-21 17:17:57 +02:00
branch.go Move some code into models/git () 2022-06-12 23:51:54 +08:00
collaborators.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
commits.go Add stat to ToCommit function for speed () 2022-10-06 11:21:04 +08:00
file.go fix hard-coded timeout and error panic in API archive download endpoint () 2022-08-29 11:45:20 +02:00
fork.go Move access and repo permission to models/perm/access () 2022-05-11 12:09:36 +02:00
git_hook.go Move macaron to chi () 2021-01-26 16:36:53 +01:00
git_ref.go Go 1.19 format () 2022-08-30 21:15:45 -05:00
hook.go Add Webhook authorization header () 2022-11-03 20:23:20 +02:00
hook_test.go Decouple HookTask from Repository () 2022-10-21 18:21:56 +02:00
issue.go Use correct page size for link header pagination () 2022-08-02 22:59:44 +08:00
issue_comment.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_label.go Add more linters to improve code readability () 2022-06-20 12:02:49 +02:00
issue_reaction.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_stopwatch.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_subscription.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_tracked_time.go Go 1.19 format () 2022-08-30 21:15:45 -05:00
key.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
label.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
language.go Move almost all functions' parameter db.Engine to context.Context () 2022-05-20 22:08:52 +08:00
main_test.go Use queue instead of memory queue in webhook send service () 2022-04-25 20:03:01 +02:00
migrate.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
milestone.go fix: some typos () 2022-06-13 15:34:46 +08:00
mirror.go Add new API endpoints for push mirrors management () 2022-07-30 18:45:59 +02:00
notes.go Add stat to ToCommit function for speed () 2022-10-06 11:21:04 +08:00
patch.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
pull.go feat: notify doers of a merge when automerging () 2022-11-03 23:49:00 +08:00
pull_review.go Dismiss prior pull reviews if done via web in review dismiss () 2022-07-19 15:20:28 +02:00
release.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
release_attachment.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
release_tags.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
repo.go Make external issue tracker regexp configurable via API () 2022-10-07 20:49:30 +08:00
repo_test.go Renamed ctx.User to ctx.Doer. () 2022-03-22 15:03:22 +08:00
star.go Renamed ctx.User to ctx.Doer. () 2022-03-22 15:03:22 +08:00
status.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
subscriber.go Renamed ctx.User to ctx.Doer. () 2022-03-22 15:03:22 +08:00
tag.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
teams.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
topic.go Add missing return for when topic isn't found () 2022-07-13 18:39:19 +01:00
transfer.go Move almost all functions' parameter db.Engine to context.Context () 2022-05-20 22:08:52 +08:00
tree.go Propagate context and ensure git commands run in request context () 2022-01-19 23:26:57 +00:00
wiki.go Webhook for Wiki changes () 2022-09-04 20:54:23 +01:00