1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-02-18 08:09:02 +00:00
forgejo/routers/web/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
..
activity.go Respect user's locale when rendering the date range in the repo activity page () 2022-10-13 00:14:14 +03:00
attachment.go Move some repository related code into sub package () 2022-06-06 16:01:49 +08:00
blame.go Refactor git command arguments and make all arguments to be safe to be used () 2022-10-23 22:44:45 +08:00
branch.go Keep path when creating a new branch () 2022-09-15 21:25:16 +08:00
cherry_pick.go Remove RequireHighlightJS field, update plantuml example. () 2022-05-05 10:53:38 +03:00
commit.go Fix pagination limit parameter problem () 2022-09-08 11:56:14 -04:00
compare.go Refactor git command arguments and make all arguments to be safe to be used () 2022-10-23 22:44:45 +08:00
download.go Slightly simplify LastCommitCache () 2022-07-25 16:39:42 +01:00
editor.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
editor_test.go Add more linters to improve code readability () 2022-06-20 12:02:49 +02:00
find.go Feature: Find files in repo () 2022-06-09 14:15:08 +03:00
http.go Refactor git command arguments and make all arguments to be safe to be used () 2022-10-23 22:44:45 +08:00
http_test.go Fix http path bug () 2021-06-09 14:53:12 +02:00
issue.go Add generic set type () 2022-10-12 13:18:26 +08:00
issue_content_history.go Make better use of i18n () 2022-06-26 22:19:22 +08:00
issue_dependency.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_label.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_label_test.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_lock.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_stopwatch.go Stop spurious APIFormat stopwatches logs () 2022-06-17 22:47:15 +01:00
issue_test.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_timetrack.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
issue_watch.go Move issues related files into models/issues () 2022-06-13 17:37:59 +08:00
lfs.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
main_test.go Use a struct as test options () 2022-04-14 21:58:21 +08:00
middlewares.go Add system setting table with cache and also add cache supports for user setting () 2022-10-17 07:29:26 +08:00
migrate.go Unify repo settings & show better error () 2022-06-12 13:43:27 +08:00
milestone.go Move milestone to models/issues/ () 2022-04-08 17:11:15 +08:00
packages.go Show hint to link package to repo when viewing empty repo package list () 2022-07-27 19:58:21 +08:00
patch.go Remove RequireHighlightJS field, update plantuml example. () 2022-05-05 10:53:38 +03:00
projects.go Check if project has the same repository id with issue when assign project to issue () 2022-06-30 23:55:08 +08:00
projects_test.go Decouple unit test code from business code () 2021-11-12 22:36:47 +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 Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
release_test.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
render.go Allow render HTML with css/js external links () 2022-06-16 11:33:23 +08:00
repo.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
search.go Add user/organization code search () 2022-10-11 00:12:03 +01:00
setting.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
setting_protected_branch.go Move some code into models/git () 2022-06-12 23:51:54 +08:00
settings_test.go test: use T.TempDir to create temporary test directory () 2022-09-04 16:14:53 +01:00
tag.go Move some code into models/git () 2022-06-12 23:51:54 +08:00
topic.go Renamed ctx.User to ctx.Doer. () 2022-03-22 15:03:22 +08:00
treelist.go Refactor parseTreeEntries, speed up tree list () 2022-10-08 01:20:53 +08:00
view.go adapt README_{Country}.md stype name in localizedExtensions () 2022-10-24 14:12:15 +08:00
view_test.go adapt README_{Country}.md stype name in localizedExtensions () 2022-10-24 14:12:15 +08:00
webhook.go Add Webhook authorization header () 2022-11-03 20:23:20 +02:00
wiki.go [refactor] Use const for wiki DefaultBranch () 2022-10-15 16:40:32 +02:00
wiki_test.go Make git.OpenRepository accept Context () 2022-03-30 03:13:41 +08:00