diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2023-03-10 15:28:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-10 08:28:32 -0600 |
commit | 2173f14708ff3b35d7821fc9b6dcb5fcd06b8494 (patch) | |
tree | 5dcb735cc960095f9f8e114a1d896bb80df66ba9 /templates | |
parent | dad057b6393548ad389ead07c2cce5b3ac2811e0 (diff) | |
download | gitea-2173f14708ff3b35d7821fc9b6dcb5fcd06b8494.tar.gz gitea-2173f14708ff3b35d7821fc9b6dcb5fcd06b8494.zip |
Add user webhooks (#21563)
Currently we can add webhooks for organizations but not for users. This
PR adds the latter. You can access it from the current users settings.
![grafik](https://user-images.githubusercontent.com/1666336/197391408-15dfdc23-b476-4d0c-82f7-9bc9b065988f.png)
Diffstat (limited to 'templates')
-rw-r--r-- | templates/repo/settings/webhook/history.tmpl | 2 | ||||
-rw-r--r-- | templates/swagger/v1_json.tmpl | 146 | ||||
-rw-r--r-- | templates/user/settings/applications.tmpl | 6 | ||||
-rw-r--r-- | templates/user/settings/hook_new.tmpl | 53 | ||||
-rw-r--r-- | templates/user/settings/hooks.tmpl | 8 | ||||
-rw-r--r-- | templates/user/settings/navbar.tmpl | 5 |
6 files changed, 219 insertions, 1 deletions
diff --git a/templates/repo/settings/webhook/history.tmpl b/templates/repo/settings/webhook/history.tmpl index bf7fe05de2..f76cdb147d 100644 --- a/templates/repo/settings/webhook/history.tmpl +++ b/templates/repo/settings/webhook/history.tmpl @@ -40,7 +40,7 @@ <span class="ui label">N/A</span> {{end}} </a> - {{if or $.Permission.IsAdmin $.IsOrganizationOwner $.PageIsAdmin}} + {{if or $.Permission.IsAdmin $.IsOrganizationOwner $.PageIsAdmin $.PageIsUserSettings}} <div class="right menu"> <form class="item" action="{{$.Link}}/replay/{{.UUID}}" method="post"> {{$.CsrfTokenHtml}} diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 0605937599..cb88e175ea 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -13014,6 +13014,152 @@ } } }, + "/user/hooks": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "List the authenticated user's webhooks", + "operationId": "userListHooks", + "parameters": [ + { + "type": "integer", + "description": "page number of results to return (1-based)", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "page size of results", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "$ref": "#/responses/HookList" + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Create a hook", + "operationId": "userCreateHook", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateHookOption" + } + } + ], + "responses": { + "201": { + "$ref": "#/responses/Hook" + } + } + } + }, + "/user/hooks/{id}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get a hook", + "operationId": "userGetHook", + "parameters": [ + { + "type": "integer", + "format": "int64", + "description": "id of the hook to get", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "$ref": "#/responses/Hook" + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a hook", + "operationId": "userDeleteHook", + "parameters": [ + { + "type": "integer", + "format": "int64", + "description": "id of the hook to delete", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "$ref": "#/responses/empty" + } + } + }, + "patch": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a hook", + "operationId": "userEditHook", + "parameters": [ + { + "type": "integer", + "format": "int64", + "description": "id of the hook to update", + "name": "id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/EditHookOption" + } + } + ], + "responses": { + "200": { + "$ref": "#/responses/Hook" + } + } + } + }, "/user/keys": { "get": { "produces": [ diff --git a/templates/user/settings/applications.tmpl b/templates/user/settings/applications.tmpl index ef9ac9a977..b0cd37d44c 100644 --- a/templates/user/settings/applications.tmpl +++ b/templates/user/settings/applications.tmpl @@ -140,6 +140,12 @@ </div> <div class="field"> <div class="ui checkbox"> + <input class="enable-system" type="checkbox" name="scope" value="admin:user_hook"> + <label>admin:user_hook</label> + </div> + </div> + <div class="field"> + <div class="ui checkbox"> <input class="enable-system" type="checkbox" name="scope" value="notification"> <label>notification</label> </div> diff --git a/templates/user/settings/hook_new.tmpl b/templates/user/settings/hook_new.tmpl new file mode 100644 index 0000000000..20aaf65f62 --- /dev/null +++ b/templates/user/settings/hook_new.tmpl @@ -0,0 +1,53 @@ +{{template "base/head" .}} +<div class="page-content user settings new webhook"> + {{template "user/settings/navbar" .}} + <div class="ui container"> + <div class="twelve wide column content"> + {{template "base/alert" .}} + <h4 class="ui top attached header"> + {{if .PageIsSettingsHooksNew}}{{.locale.Tr "repo.settings.add_webhook"}}{{else}}{{.locale.Tr "repo.settings.update_webhook"}}{{end}} + <div class="ui right"> + {{if eq .HookType "gitea"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/gitea.svg"> + {{else if eq .HookType "gogs"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/gogs.ico"> + {{else if eq .HookType "slack"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/slack.png"> + {{else if eq .HookType "discord"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/discord.png"> + {{else if eq .HookType "dingtalk"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/dingtalk.ico"> + {{else if eq .HookType "telegram"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/telegram.png"> + {{else if eq .HookType "msteams"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/msteams.png"> + {{else if eq .HookType "feishu"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/feishu.png"> + {{else if eq .HookType "matrix"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/matrix.svg"> + {{else if eq .HookType "wechatwork"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/wechatwork.png"> + {{else if eq .HookType "packagist"}} + <img width="26" height="26" src="{{AssetUrlPrefix}}/img/packagist.png"> + {{end}} + </div> + </h4> + <div class="ui attached segment"> + {{template "repo/settings/webhook/gitea" .}} + {{template "repo/settings/webhook/gogs" .}} + {{template "repo/settings/webhook/slack" .}} + {{template "repo/settings/webhook/discord" .}} + {{template "repo/settings/webhook/dingtalk" .}} + {{template "repo/settings/webhook/telegram" .}} + {{template "repo/settings/webhook/msteams" .}} + {{template "repo/settings/webhook/feishu" .}} + {{template "repo/settings/webhook/matrix" .}} + {{template "repo/settings/webhook/wechatwork" .}} + {{template "repo/settings/webhook/packagist" .}} + </div> + + {{template "repo/settings/webhook/history" .}} + </div> + </div> +</div> +{{template "base/footer" .}} diff --git a/templates/user/settings/hooks.tmpl b/templates/user/settings/hooks.tmpl new file mode 100644 index 0000000000..02bfa8a4e6 --- /dev/null +++ b/templates/user/settings/hooks.tmpl @@ -0,0 +1,8 @@ +{{template "base/head" .}} +<div class="page-content user settings webhooks"> + {{template "user/settings/navbar" .}} + <div class="ui container"> + {{template "repo/settings/webhook/list" .}} + </div> +</div> +{{template "base/footer" .}} diff --git a/templates/user/settings/navbar.tmpl b/templates/user/settings/navbar.tmpl index 8deffde0b2..4afe2173c2 100644 --- a/templates/user/settings/navbar.tmpl +++ b/templates/user/settings/navbar.tmpl @@ -26,6 +26,11 @@ {{.locale.Tr "packages.title"}} </a> {{end}} + {{if not DisableWebhooks}} + <a class="{{if .PageIsSettingsHooks}}active {{end}}item" href="{{AppSubUrl}}/user/settings/hooks"> + {{.locale.Tr "repo.settings.hooks"}} + </a> + {{end}} <a class="{{if .PageIsSettingsOrganization}}active {{end}}item" href="{{AppSubUrl}}/user/settings/organization"> {{.locale.Tr "settings.organization"}} </a> |