forked from casdoor/casdoor
feat: support "new-user" webhooks for LDAP and syncer (#4285)
This commit is contained in:
@@ -383,6 +383,9 @@ func SyncLdapUsers(owner string, syncUsers []LdapUser, ldapId string) (existUser
|
||||
failedUsers = append(failedUsers, syncUser)
|
||||
continue
|
||||
}
|
||||
|
||||
// Trigger webhook for LDAP user sync
|
||||
TriggerWebhookForUser("new-user-ldap", newUser)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -147,6 +147,11 @@ func (syncer *Syncer) syncUsers() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Trigger webhooks for syncer user additions
|
||||
for _, newUser := range newUsers {
|
||||
TriggerWebhookForUser("new-user-syncer", newUser)
|
||||
}
|
||||
}
|
||||
|
||||
if !syncer.IsReadOnly {
|
||||
|
||||
@@ -26,6 +26,7 @@ import (
|
||||
"github.com/casdoor/casdoor/i18n"
|
||||
"github.com/casdoor/casdoor/idp"
|
||||
"github.com/casdoor/casdoor/util"
|
||||
"github.com/casvisor/casvisor-go-sdk/casvisorsdk"
|
||||
"github.com/go-webauthn/webauthn/webauthn"
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/xorm-io/core"
|
||||
@@ -873,3 +874,29 @@ func replaceAttributeValuesWithList(val string, replaceVals []string, values []s
|
||||
|
||||
return newValues
|
||||
}
|
||||
|
||||
// TriggerWebhookForUser triggers a webhook for user operations (add, update, delete)
|
||||
// action: the action type, e.g., "new-user", "update-user", "delete-user"
|
||||
// user: the user object
|
||||
func TriggerWebhookForUser(action string, user *User) {
|
||||
if user == nil {
|
||||
return
|
||||
}
|
||||
|
||||
record := &casvisorsdk.Record{
|
||||
Name: util.GenerateId(),
|
||||
CreatedTime: util.GetCurrentTime(),
|
||||
Organization: user.Owner,
|
||||
User: user.Name,
|
||||
Method: "POST",
|
||||
RequestUri: "/api/" + action,
|
||||
Action: action,
|
||||
Object: util.StructToJson(user),
|
||||
StatusCode: 200,
|
||||
IsTriggered: false,
|
||||
}
|
||||
|
||||
util.SafeGoroutine(func() {
|
||||
AddRecord(record)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user