Adding new "VIEW_MEMBERS" permissions restrict the scope of users visibility (#10487)
* MM-14138: Adding new "VIEW_MEMBERS" permissions restrict the scope of users visibility * Fixing gofmt * Fixing broken tests * Addressing PR review comments from Miguel de la Cruz * Removed hack * A bit nicer and cleaner code in the UserBelongsToChannels function * Adding cluster cache invalidation for user team ids * Checking in the correct order permissions to not leek existency information * Adding restrictions to TeamMembers and User status requests * Fixing tests * Fixing status endpoint permissions checks * Adding more tests * Fixing tests * More tests and making the restrictions query based only on joins * Adding more tests * Adding more tests * fixing merge problems * Reverting status changes to avoid performance issues * Adding more tests * Fixing test * i18n extract * Adding extra method for get restrictions for a team * Add the new elasticsearch functions to search users with restrictions * Add missing translation string * Rename restrictedChannelIds to restrictedToChannels * Remove ToDo * Adding the permission to the SystemAdmin role during permissions migrations
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5b70962f71
Коммит
c8920588a0
@@ -4,6 +4,7 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -118,6 +119,22 @@ type UserForIndexing struct {
|
||||
ChannelsIds []string `json:"channel_id"`
|
||||
}
|
||||
|
||||
type ViewUsersRestrictions struct {
|
||||
Teams []string
|
||||
Channels []string
|
||||
}
|
||||
|
||||
func (r *ViewUsersRestrictions) Hash() string {
|
||||
if r == nil {
|
||||
return ""
|
||||
}
|
||||
ids := append(r.Teams, r.Channels...)
|
||||
sort.Strings(ids)
|
||||
hash := sha256.New()
|
||||
hash.Write([]byte(strings.Join(ids, "")))
|
||||
return fmt.Sprintf("%x", hash.Sum(nil))
|
||||
}
|
||||
|
||||
type UserSlice []*User
|
||||
|
||||
func (u UserSlice) Usernames() []string {
|
||||
|
||||
Ссылка в новой задаче
Block a user