diff --git a/app/user_test.go b/app/user_test.go index c4055f689b..c5ea5180af 100644 --- a/app/user_test.go +++ b/app/user_test.go @@ -1349,6 +1349,52 @@ func TestDemoteUserToGuest(t *testing.T) { require.Nil(t, err) assert.Len(t, *channelMembers, 3) }) + + t.Run("Must be removed as team and channel admin", func(t *testing.T) { + user := th.CreateUser() + require.Equal(t, "system_user", user.Roles) + + team := th.CreateTeam() + + th.LinkUserToTeam(user, team) + th.App.UpdateTeamMemberRoles(team.Id, user.Id, "team_user team_admin") + + teamMember, err := th.App.GetTeamMember(team.Id, user.Id) + require.Nil(t, err) + require.True(t, teamMember.SchemeUser) + require.True(t, teamMember.SchemeAdmin) + require.False(t, teamMember.SchemeGuest) + + channel := th.CreateChannel(team) + + th.AddUserToChannel(user, channel) + th.App.UpdateChannelMemberSchemeRoles(channel.Id, user.Id, false, true, true) + + channelMember, err := th.App.GetChannelMember(channel.Id, user.Id) + assert.Nil(t, err) + assert.True(t, channelMember.SchemeUser) + assert.True(t, channelMember.SchemeAdmin) + assert.False(t, channelMember.SchemeGuest) + + err = th.App.DemoteUserToGuest(user) + require.Nil(t, err) + + user, err = th.App.GetUser(user.Id) + assert.Nil(t, err) + assert.Equal(t, "system_guest", user.Roles) + + teamMember, err = th.App.GetTeamMember(team.Id, user.Id) + assert.Nil(t, err) + assert.False(t, teamMember.SchemeUser) + assert.False(t, teamMember.SchemeAdmin) + assert.True(t, teamMember.SchemeGuest) + + channelMember, err = th.App.GetChannelMember(channel.Id, user.Id) + assert.Nil(t, err) + assert.False(t, channelMember.SchemeUser) + assert.False(t, channelMember.SchemeAdmin) + assert.True(t, channelMember.SchemeGuest) + }) } func TestDeactivateGuests(t *testing.T) { diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index f2c669117e..f9c35ccfd1 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -1884,6 +1884,7 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (*model.User, error) { query = us.getQueryBuilder().Update("ChannelMembers"). Set("SchemeUser", false). + Set("SchemeAdmin", false). Set("SchemeGuest", true). Where(sq.Eq{"UserId": userID}) @@ -1898,6 +1899,7 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (*model.User, error) { query = us.getQueryBuilder().Update("TeamMembers"). Set("SchemeUser", false). + Set("SchemeAdmin", false). Set("SchemeGuest", true). Where(sq.Eq{"UserId": userID})