aboutsummaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorKN4CK3R2023-03-10 15:28:32 +0100
committerGitHub2023-03-10 08:28:32 -0600
commit2173f14708ff3b35d7821fc9b6dcb5fcd06b8494 (patch)
tree5dcb735cc960095f9f8e114a1d896bb80df66ba9 /templates
parentdad057b6393548ad389ead07c2cce5b3ac2811e0 (diff)
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.tmpl2
-rw-r--r--templates/swagger/v1_json.tmpl146
-rw-r--r--templates/user/settings/applications.tmpl6
-rw-r--r--templates/user/settings/hook_new.tmpl53
-rw-r--r--templates/user/settings/hooks.tmpl8
-rw-r--r--templates/user/settings/navbar.tmpl5
6 files changed, 219 insertions, 1 deletions
diff --git a/templates/repo/settings/webhook/history.tmpl b/templates/repo/settings/webhook/history.tmpl
index bf7fe05de..f76cdb147 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 060593759..cb88e175e 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 ef9ac9a97..b0cd37d44 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 000000000..20aaf65f6
--- /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 000000000..02bfa8a4e
--- /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 8deffde0b..4afe2173c 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>