mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Fixing websockets updates for promote/demote (#11799)
* Fixing websockets updates for promote/demote * Adding extra test check * Addressing PR comments
This commit is contained in:
54
app/user.go
54
app/user.go
@@ -2247,14 +2247,31 @@ func (a *App) PromoteGuestToUser(user *model.User, requestorId string) *model.Ap
|
||||
|
||||
promotedUser, err := a.GetUser(user.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
mlog.Error(err.Error())
|
||||
} else {
|
||||
a.sendUpdatedUserEvent(*promotedUser)
|
||||
a.UpdateSessionsIsGuest(promotedUser.Id, promotedUser.IsGuest())
|
||||
}
|
||||
|
||||
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_UPDATED, "", "", "", nil)
|
||||
message.Add("user", promotedUser)
|
||||
a.Publish(message)
|
||||
teamMembers, err := a.GetTeamMembersForUser(user.Id)
|
||||
if err != nil {
|
||||
mlog.Error(err.Error())
|
||||
}
|
||||
|
||||
a.UpdateSessionsIsGuest(promotedUser.Id, promotedUser.IsGuest())
|
||||
for _, member := range teamMembers {
|
||||
a.sendUpdatedMemberRoleEvent(user.Id, member)
|
||||
|
||||
channelMembers, err := a.GetChannelMembersForUser(member.TeamId, user.Id)
|
||||
if err != nil {
|
||||
mlog.Error(err.Error())
|
||||
}
|
||||
|
||||
for _, member := range *channelMembers {
|
||||
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
|
||||
evt.Add("channelMember", member.ToJson())
|
||||
a.Publish(evt)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -2269,14 +2286,31 @@ func (a *App) DemoteUserToGuest(user *model.User) *model.AppError {
|
||||
|
||||
demotedUser, err := a.GetUser(user.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
mlog.Error(err.Error())
|
||||
} else {
|
||||
a.sendUpdatedUserEvent(*demotedUser)
|
||||
a.UpdateSessionsIsGuest(demotedUser.Id, demotedUser.IsGuest())
|
||||
}
|
||||
|
||||
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_UPDATED, "", "", "", nil)
|
||||
message.Add("user", demotedUser)
|
||||
a.Publish(message)
|
||||
teamMembers, err := a.GetTeamMembersForUser(user.Id)
|
||||
if err != nil {
|
||||
mlog.Error(err.Error())
|
||||
}
|
||||
|
||||
a.UpdateSessionsIsGuest(demotedUser.Id, demotedUser.IsGuest())
|
||||
for _, member := range teamMembers {
|
||||
a.sendUpdatedMemberRoleEvent(user.Id, member)
|
||||
|
||||
channelMembers, err := a.GetChannelMembersForUser(member.TeamId, user.Id)
|
||||
if err != nil {
|
||||
mlog.Error(err.Error())
|
||||
}
|
||||
|
||||
for _, member := range *channelMembers {
|
||||
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
|
||||
evt.Add("channelMember", member.ToJson())
|
||||
a.Publish(evt)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1635,8 +1635,10 @@ func (us SqlUserStore) PromoteGuestToUser(userId string) *model.AppError {
|
||||
}
|
||||
}
|
||||
|
||||
curTime := model.GetMillis()
|
||||
query := us.getQueryBuilder().Update("Users").
|
||||
Set("Roles", strings.Join(roles, " ")).
|
||||
Set("UpdateAt", curTime).
|
||||
Where(sq.Eq{"Id": userId})
|
||||
|
||||
queryString, args, err := query.ToSql()
|
||||
@@ -1705,8 +1707,10 @@ func (us SqlUserStore) DemoteUserToGuest(userId string) *model.AppError {
|
||||
}
|
||||
}
|
||||
|
||||
curTime := model.GetMillis()
|
||||
query := us.getQueryBuilder().Update("Users").
|
||||
Set("Roles", strings.Join(newRoles, " ")).
|
||||
Set("UpdateAt", curTime).
|
||||
Where(sq.Eq{"Id": userId})
|
||||
|
||||
queryString, args, err := query.ToSql()
|
||||
|
||||
@@ -4280,6 +4280,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) {
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Equal(t, "system_user", updatedUser.Roles)
|
||||
require.True(t, user.UpdateAt < updatedUser.UpdateAt)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
require.Nil(t, err)
|
||||
@@ -4586,6 +4587,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
|
||||
updatedUser, err := ss.User().Get(user.Id)
|
||||
assert.Nil(t, err)
|
||||
require.Equal(t, "system_guest", updatedUser.Roles)
|
||||
require.True(t, user.UpdateAt < updatedUser.UpdateAt)
|
||||
|
||||
updatedTeamMember, err := ss.Team().GetMember(teamId, user.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
Reference in New Issue
Block a user