Apply role filters for /get/users in channel (#21251)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b3ffec28c6
Коммит
28698abb9f
@@ -742,6 +742,8 @@ func (us SqlUserStore) GetProfilesInChannel(options *model.UserGetOptions) ([]*m
|
||||
query = query.Where("u.DeleteAt = 0")
|
||||
}
|
||||
|
||||
query = applyMultiRoleFilters(query, options.Roles, options.TeamRoles, options.ChannelRoles, us.DriverName() == model.DatabaseDriverPostgres)
|
||||
|
||||
queryString, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "get_profiles_in_channel_tosql")
|
||||
|
||||
@@ -1003,6 +1003,36 @@ func testUserStoreGetProfilesInChannel(t *testing.T, ss store.Store) {
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []*model.User{sanitized(u1)}, users)
|
||||
})
|
||||
|
||||
t.Run("Filter by channel members and channel admins", func(t *testing.T) {
|
||||
// save admin for c1
|
||||
user2Admin, err := ss.User().Save(&model.User{
|
||||
Email: MakeEmail(),
|
||||
Username: "bbb" + model.NewId(),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
defer func() { require.NoError(t, ss.User().PermanentDelete(user2Admin.Id)) }()
|
||||
_, nErr = ss.Team().SaveMember(&model.TeamMember{TeamId: teamId, UserId: user2Admin.Id}, -1)
|
||||
require.NoError(t, nErr)
|
||||
|
||||
_, nErr = ss.Channel().SaveMember(&model.ChannelMember{
|
||||
ChannelId: c1.Id,
|
||||
UserId: user2Admin.Id,
|
||||
NotifyProps: model.GetDefaultChannelNotifyProps(),
|
||||
ExplicitRoles: "channel_admin",
|
||||
})
|
||||
require.NoError(t, nErr)
|
||||
ss.Channel().UpdateMembersRole(c1.Id, []string{user2Admin.Id})
|
||||
|
||||
users, err := ss.User().GetProfilesInChannel(&model.UserGetOptions{
|
||||
InChannelId: c1.Id,
|
||||
ChannelRoles: []string{model.ChannelAdminRoleId},
|
||||
Page: 0,
|
||||
PerPage: 5,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, user2Admin.Id, users[0].Id)
|
||||
})
|
||||
}
|
||||
|
||||
func testUserStoreGetProfilesInChannelByAdmin(t *testing.T, ss store.Store, s SqlStore) {
|
||||
|
||||
Ссылка в новой задаче
Block a user