gitea/models
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
..
activities feat: notify doers of a merge when automerging () 2022-11-03 23:49:00 +08:00
admin Make every not exist error unwrappable to a fs.ErrNotExist () 2022-10-18 07:50:37 +02:00
asymkey Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
auth Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
avatars Add system setting table with cache and also add cache supports for user setting () 2022-10-17 07:29:26 +08:00
db Merge db.Iterate and IterateObjects () 2022-10-31 23:51:14 +08:00
fixtures Record OAuth client type at registration () 2022-10-24 15:59:24 +08:00
foreignreference Make every not exist error unwrappable to a fs.ErrNotExist () 2022-10-18 07:50:37 +02:00
git Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
issues Fix issues count bug () 2022-10-25 14:47:46 +02:00
migrations Add Webhook authorization header () 2022-11-03 20:23:20 +02:00
organization Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
packages Alter package_version.metadata_json to LONGTEXT () 2022-11-03 15:28:46 +08:00
perm Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
project Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
pull Make every not exist error unwrappable to a fs.ErrNotExist () 2022-10-18 07:50:37 +02:00
repo Fix issues count bug () 2022-10-25 14:47:46 +02:00
system Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
unit Add more linters to improve code readability () 2022-06-20 12:02:49 +02:00
unittest Add system setting table with cache and also add cache supports for user setting () 2022-10-17 07:29:26 +08:00
user Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
webhook Add Webhook authorization header () 2022-11-03 20:23:20 +02:00
error.go Make every not exist error unwrappable to a fs.ErrNotExist () 2022-10-18 07:50:37 +02:00
fixture_generation.go Move access and repo permission to models/perm/access () 2022-05-11 12:09:36 +02:00
fixture_test.go Decouple unit test code from business code () 2021-11-12 22:36:47 +08:00
main_test.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 Add generic set type () 2022-10-12 13:18:26 +08:00
migrate_test.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
org.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
org_team.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
org_team_test.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
org_test.go Refactor AssertExistsAndLoadBean to use generics () 2022-08-16 10:22:25 +08:00
repo.go Fix issues count bug () 2022-10-25 14:47:46 +02:00
repo_collaboration.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
repo_collaboration_test.go Move some files into models' sub packages () 2022-08-25 10:31:57 +08:00
repo_test.go Move tests as seperate sub packages to reduce duplicated file names () 2022-06-15 09:02:00 +02:00
repo_transfer.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00
repo_transfer_test.go Refactor AssertExistsAndLoadBean to use generics () 2022-08-16 10:22:25 +08:00
user.go Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) () 2022-10-24 20:29:17 +01:00