From 2d4103d75137bfb84c579ff74047e9db7024c421 Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Sat, 1 Jan 2022 11:15:04 +0800 Subject: [PATCH] Add isUserExtended to webhook. --- object/record.go | 7 ++++ object/webhook.go | 13 +++---- web/src/WebhookEditPage.js | 66 ++++++++++++++++++++++++++++++++++-- web/src/WebhookListPage.js | 12 +++++++ web/src/locales/de/data.json | 2 ++ web/src/locales/en/data.json | 2 ++ web/src/locales/fr/data.json | 2 ++ web/src/locales/ja/data.json | 2 ++ web/src/locales/ko/data.json | 2 ++ web/src/locales/ru/data.json | 2 ++ web/src/locales/zh/data.json | 2 ++ 11 files changed, 104 insertions(+), 8 deletions(-) diff --git a/object/record.go b/object/record.go index ce3e3b8d..77d6962e 100644 --- a/object/record.go +++ b/object/record.go @@ -47,6 +47,8 @@ type Record struct { RequestUri string `xorm:"varchar(1000)" json:"requestUri"` Action string `xorm:"varchar(1000)" json:"action"` + ExtendedUser *User `xorm:"-" json:"extendedUser"` + IsTriggered bool `json:"isTriggered"` } @@ -159,6 +161,11 @@ func SendWebhooks(record *Record) error { } if matched { + if webhook.IsUserExtended { + user := getUser(record.Organization, record.User) + record.ExtendedUser = user + } + err := sendWebhook(webhook, record) if err != nil { return err diff --git a/object/webhook.go b/object/webhook.go index 1053c2e3..1961c826 100644 --- a/object/webhook.go +++ b/object/webhook.go @@ -33,12 +33,13 @@ type Webhook struct { Organization string `xorm:"varchar(100) index" json:"organization"` - Url string `xorm:"varchar(100)" json:"url"` - Method string `xorm:"varchar(100)" json:"method"` - ContentType string `xorm:"varchar(100)" json:"contentType"` - Headers []*Header `xorm:"mediumtext" json:"headers"` - Events []string `xorm:"varchar(100)" json:"events"` - IsEnabled bool `json:"isEnabled"` + Url string `xorm:"varchar(100)" json:"url"` + Method string `xorm:"varchar(100)" json:"method"` + ContentType string `xorm:"varchar(100)" json:"contentType"` + Headers []*Header `xorm:"mediumtext" json:"headers"` + Events []string `xorm:"varchar(100)" json:"events"` + IsUserExtended bool `json:"isUserExtended"` + IsEnabled bool `json:"isEnabled"` } func GetWebhookCount(owner, field, value string) int { diff --git a/web/src/WebhookEditPage.js b/web/src/WebhookEditPage.js index 88e70cdb..8a7eaf77 100644 --- a/web/src/WebhookEditPage.js +++ b/web/src/WebhookEditPage.js @@ -28,7 +28,7 @@ require("codemirror/mode/javascript/javascript"); const { Option } = Select; -const preview = { +const previewTemplate = { "id": 9078, "owner": "built-in", "name": "68f55b28-7380-46b1-9bde-64fe1576e3b3", @@ -42,6 +42,52 @@ const preview = { "isTriggered": false, }; +const userTemplate = { + "owner": "built-in", + "name": "admin", + "createdTime": "2020-07-16T21:46:52+08:00", + "updatedTime": "", + "id": "9eb20f79-3bb5-4e74-99ac-39e3b9a171e8", + "type": "normal-user", + "password": "123", + "passwordSalt": "", + "displayName": "Admin", + "avatar": "https://cdn.casbin.com/usercontent/admin/avatar/1596241359.png", + "permanentAvatar": "https://cdn.casbin.com/casdoor/avatar/casbin/admin.png", + "email": "admin@example.com", + "phone": "", + "location": "", + "address": null, + "affiliation": "", + "title": "", + "score": 10000, + "ranking": 10, + "isOnline": false, + "isAdmin": true, + "isGlobalAdmin": false, + "isForbidden": false, + "isDeleted": false, + "signupApplication": "app-casnode", + "properties": { + "bio": "", + "checkinDate": "20200801", + "editorType": "", + "emailVerifiedTime": "2020-07-16T21:46:52+08:00", + "fileQuota": "50", + "location": "", + "no": "22", + "oauth_QQ_displayName": "", + "oauth_QQ_verifiedTime": "", + "oauth_WeChat_displayName": "", + "oauth_WeChat_verifiedTime": "", + "onlineStatus": "false", + "phoneVerifiedTime": "", + "renameQuota": "3", + "tagline": "", + "website": "" + } +}; + class WebhookEditPage extends React.Component { constructor(props) { super(props); @@ -94,6 +140,12 @@ class WebhookEditPage extends React.Component { } renderWebhook() { + let preview = Setting.deepCopy(previewTemplate); + if (this.state.webhook.isUserExtended) { + preview["extendedUser"] = userTemplate; + } + const previewText = JSON.stringify(preview, null, 2); + return ( @@ -200,6 +252,16 @@ class WebhookEditPage extends React.Component { + + + {Setting.getLabel(i18next.t("webhook:Is user extended"), i18next.t("webhook:Is user extended - Tooltip"))} : + + + { + this.updateWebhookField('isUserExtended', checked); + }} /> + + {Setting.getLabel(i18next.t("general:Preview"), i18next.t("general:Preview - Tooltip"))} : @@ -207,7 +269,7 @@ class WebhookEditPage extends React.Component {
{}} /> diff --git a/web/src/WebhookListPage.js b/web/src/WebhookListPage.js index 0e17a29d..8ab534d7 100644 --- a/web/src/WebhookListPage.js +++ b/web/src/WebhookListPage.js @@ -157,6 +157,18 @@ class WebhookListPage extends BaseListPage { return Setting.getTags(text); } }, + { + title: i18next.t("webhook:Is user extended"), + dataIndex: 'isUserExtended', + key: 'isUserExtended', + width: '160px', + sorter: true, + render: (text, record, index) => { + return ( + + ) + } + }, { title: i18next.t("general:Is enabled"), dataIndex: 'isEnabled', diff --git a/web/src/locales/de/data.json b/web/src/locales/de/data.json index e3b1d8a4..1d43a3e5 100644 --- a/web/src/locales/de/data.json +++ b/web/src/locales/de/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/en/data.json b/web/src/locales/en/data.json index 06781490..1176a238 100644 --- a/web/src/locales/en/data.json +++ b/web/src/locales/en/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/fr/data.json b/web/src/locales/fr/data.json index e3b1d8a4..1d43a3e5 100644 --- a/web/src/locales/fr/data.json +++ b/web/src/locales/fr/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/ja/data.json b/web/src/locales/ja/data.json index e3b1d8a4..1d43a3e5 100644 --- a/web/src/locales/ja/data.json +++ b/web/src/locales/ja/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/ko/data.json b/web/src/locales/ko/data.json index e3b1d8a4..1d43a3e5 100644 --- a/web/src/locales/ko/data.json +++ b/web/src/locales/ko/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/ru/data.json b/web/src/locales/ru/data.json index e3b1d8a4..1d43a3e5 100644 --- a/web/src/locales/ru/data.json +++ b/web/src/locales/ru/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "Events - Tooltip", "Headers": "Headers", "Headers - Tooltip": "Headers - Tooltip", + "Is user extended": "Is user extended", + "Is user extended - Tooltip": "Is user extended - Tooltip", "Method": "Method", "Method - Tooltip": "Method - Tooltip", "Name": "Name", diff --git a/web/src/locales/zh/data.json b/web/src/locales/zh/data.json index 53136d44..598191e9 100644 --- a/web/src/locales/zh/data.json +++ b/web/src/locales/zh/data.json @@ -449,6 +449,8 @@ "Events - Tooltip": "事件", "Headers": "协议头", "Headers - Tooltip": "HTTP协议头(键值对)", + "Is user extended": "扩展用户字段", + "Is user extended - Tooltip": "JSON里加入extendedUser来扩展用户字段", "Method": "方法", "Method - Tooltip": "HTTP方法", "Name": "名称",