[MM-40582] Send unsanitized user to source on user_updated (#19444)
- feat: On user_updated event, send unsanitized user to event source and send sanitized event to other users - tests: Add tests for user_updated event changes Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
321b19e3db
Коммит
4ebf0df545
16
app/user.go
16
app/user.go
@@ -1027,18 +1027,30 @@ func (a *App) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.Us
|
||||
}
|
||||
|
||||
func (a *App) sendUpdatedUserEvent(user model.User) {
|
||||
// exclude event creator user from admin, member user broadcast
|
||||
omitUsers := make(map[string]bool, 1)
|
||||
omitUsers[user.Id] = true
|
||||
|
||||
// declare admin and unsanitized copy of user
|
||||
adminCopyOfUser := user.DeepCopy()
|
||||
unsanitizedCopyOfUser := user.DeepCopy()
|
||||
|
||||
a.SanitizeProfile(adminCopyOfUser, true)
|
||||
adminMessage := model.NewWebSocketEvent(model.WebsocketEventUserUpdated, "", "", "", nil)
|
||||
adminMessage := model.NewWebSocketEvent(model.WebsocketEventUserUpdated, "", "", "", omitUsers)
|
||||
adminMessage.Add("user", adminCopyOfUser)
|
||||
adminMessage.GetBroadcast().ContainsSensitiveData = true
|
||||
a.Publish(adminMessage)
|
||||
|
||||
a.SanitizeProfile(&user, false)
|
||||
message := model.NewWebSocketEvent(model.WebsocketEventUserUpdated, "", "", "", nil)
|
||||
message := model.NewWebSocketEvent(model.WebsocketEventUserUpdated, "", "", "", omitUsers)
|
||||
message.Add("user", &user)
|
||||
message.GetBroadcast().ContainsSanitizedData = true
|
||||
a.Publish(message)
|
||||
|
||||
// send unsanitized user to event creator
|
||||
sourceUserMessage := model.NewWebSocketEvent(model.WebsocketEventUserUpdated, "", "", unsanitizedCopyOfUser.Id, nil)
|
||||
sourceUserMessage.Add("user", unsanitizedCopyOfUser)
|
||||
a.Publish(sourceUserMessage)
|
||||
}
|
||||
|
||||
func (a *App) UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError) {
|
||||
|
||||
Ссылка в новой задаче
Block a user