mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 20:50:19 +08:00
Add isUserExtended to webhook.
This commit is contained in:
@ -47,6 +47,8 @@ type Record struct {
|
|||||||
RequestUri string `xorm:"varchar(1000)" json:"requestUri"`
|
RequestUri string `xorm:"varchar(1000)" json:"requestUri"`
|
||||||
Action string `xorm:"varchar(1000)" json:"action"`
|
Action string `xorm:"varchar(1000)" json:"action"`
|
||||||
|
|
||||||
|
ExtendedUser *User `xorm:"-" json:"extendedUser"`
|
||||||
|
|
||||||
IsTriggered bool `json:"isTriggered"`
|
IsTriggered bool `json:"isTriggered"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,6 +161,11 @@ func SendWebhooks(record *Record) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if matched {
|
if matched {
|
||||||
|
if webhook.IsUserExtended {
|
||||||
|
user := getUser(record.Organization, record.User)
|
||||||
|
record.ExtendedUser = user
|
||||||
|
}
|
||||||
|
|
||||||
err := sendWebhook(webhook, record)
|
err := sendWebhook(webhook, record)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -33,12 +33,13 @@ type Webhook struct {
|
|||||||
|
|
||||||
Organization string `xorm:"varchar(100) index" json:"organization"`
|
Organization string `xorm:"varchar(100) index" json:"organization"`
|
||||||
|
|
||||||
Url string `xorm:"varchar(100)" json:"url"`
|
Url string `xorm:"varchar(100)" json:"url"`
|
||||||
Method string `xorm:"varchar(100)" json:"method"`
|
Method string `xorm:"varchar(100)" json:"method"`
|
||||||
ContentType string `xorm:"varchar(100)" json:"contentType"`
|
ContentType string `xorm:"varchar(100)" json:"contentType"`
|
||||||
Headers []*Header `xorm:"mediumtext" json:"headers"`
|
Headers []*Header `xorm:"mediumtext" json:"headers"`
|
||||||
Events []string `xorm:"varchar(100)" json:"events"`
|
Events []string `xorm:"varchar(100)" json:"events"`
|
||||||
IsEnabled bool `json:"isEnabled"`
|
IsUserExtended bool `json:"isUserExtended"`
|
||||||
|
IsEnabled bool `json:"isEnabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetWebhookCount(owner, field, value string) int {
|
func GetWebhookCount(owner, field, value string) int {
|
||||||
|
@ -28,7 +28,7 @@ require("codemirror/mode/javascript/javascript");
|
|||||||
|
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
const preview = {
|
const previewTemplate = {
|
||||||
"id": 9078,
|
"id": 9078,
|
||||||
"owner": "built-in",
|
"owner": "built-in",
|
||||||
"name": "68f55b28-7380-46b1-9bde-64fe1576e3b3",
|
"name": "68f55b28-7380-46b1-9bde-64fe1576e3b3",
|
||||||
@ -42,6 +42,52 @@ const preview = {
|
|||||||
"isTriggered": false,
|
"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 {
|
class WebhookEditPage extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
@ -94,6 +140,12 @@ class WebhookEditPage extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderWebhook() {
|
renderWebhook() {
|
||||||
|
let preview = Setting.deepCopy(previewTemplate);
|
||||||
|
if (this.state.webhook.isUserExtended) {
|
||||||
|
preview["extendedUser"] = userTemplate;
|
||||||
|
}
|
||||||
|
const previewText = JSON.stringify(preview, null, 2);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card size="small" title={
|
<Card size="small" title={
|
||||||
<div>
|
<div>
|
||||||
@ -200,6 +252,16 @@ class WebhookEditPage extends React.Component {
|
|||||||
</Select>
|
</Select>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
<Row style={{marginTop: '20px'}} >
|
||||||
|
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 19 : 2}>
|
||||||
|
{Setting.getLabel(i18next.t("webhook:Is user extended"), i18next.t("webhook:Is user extended - Tooltip"))} :
|
||||||
|
</Col>
|
||||||
|
<Col span={1} >
|
||||||
|
<Switch checked={this.state.webhook.isUserExtended} onChange={checked => {
|
||||||
|
this.updateWebhookField('isUserExtended', checked);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
<Row style={{marginTop: '20px'}} >
|
<Row style={{marginTop: '20px'}} >
|
||||||
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 22 : 2}>
|
<Col style={{marginTop: '5px'}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||||
{Setting.getLabel(i18next.t("general:Preview"), i18next.t("general:Preview - Tooltip"))} :
|
{Setting.getLabel(i18next.t("general:Preview"), i18next.t("general:Preview - Tooltip"))} :
|
||||||
@ -207,7 +269,7 @@ class WebhookEditPage extends React.Component {
|
|||||||
<Col span={22} >
|
<Col span={22} >
|
||||||
<div style={{width: "900px", height: "300px"}} >
|
<div style={{width: "900px", height: "300px"}} >
|
||||||
<CodeMirror
|
<CodeMirror
|
||||||
value={JSON.stringify(preview, null, 2)}
|
value={previewText}
|
||||||
options={{mode: 'javascript', theme: "material-darker"}}
|
options={{mode: 'javascript', theme: "material-darker"}}
|
||||||
onBeforeChange={(editor, data, value) => {}}
|
onBeforeChange={(editor, data, value) => {}}
|
||||||
/>
|
/>
|
||||||
|
@ -157,6 +157,18 @@ class WebhookListPage extends BaseListPage {
|
|||||||
return Setting.getTags(text);
|
return Setting.getTags(text);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: i18next.t("webhook:Is user extended"),
|
||||||
|
dataIndex: 'isUserExtended',
|
||||||
|
key: 'isUserExtended',
|
||||||
|
width: '160px',
|
||||||
|
sorter: true,
|
||||||
|
render: (text, record, index) => {
|
||||||
|
return (
|
||||||
|
<Switch disabled checkedChildren="ON" unCheckedChildren="OFF" checked={text} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: i18next.t("general:Is enabled"),
|
title: i18next.t("general:Is enabled"),
|
||||||
dataIndex: 'isEnabled',
|
dataIndex: 'isEnabled',
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "Events - Tooltip",
|
"Events - Tooltip": "Events - Tooltip",
|
||||||
"Headers": "Headers",
|
"Headers": "Headers",
|
||||||
"Headers - Tooltip": "Headers - Tooltip",
|
"Headers - Tooltip": "Headers - Tooltip",
|
||||||
|
"Is user extended": "Is user extended",
|
||||||
|
"Is user extended - Tooltip": "Is user extended - Tooltip",
|
||||||
"Method": "Method",
|
"Method": "Method",
|
||||||
"Method - Tooltip": "Method - Tooltip",
|
"Method - Tooltip": "Method - Tooltip",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
|
@ -449,6 +449,8 @@
|
|||||||
"Events - Tooltip": "事件",
|
"Events - Tooltip": "事件",
|
||||||
"Headers": "协议头",
|
"Headers": "协议头",
|
||||||
"Headers - Tooltip": "HTTP协议头(键值对)",
|
"Headers - Tooltip": "HTTP协议头(键值对)",
|
||||||
|
"Is user extended": "扩展用户字段",
|
||||||
|
"Is user extended - Tooltip": "JSON里加入extendedUser来扩展用户字段",
|
||||||
"Method": "方法",
|
"Method": "方法",
|
||||||
"Method - Tooltip": "HTTP方法",
|
"Method - Tooltip": "HTTP方法",
|
||||||
"Name": "名称",
|
"Name": "名称",
|
||||||
|
Reference in New Issue
Block a user