MM-60240 Sanitize Channels based on user permissions (#28086)

* initial commit

* add unit tests

* update tests, self review

* update tests to verify something returned.

* update app-layer

* update unit tests

* fix tests

* add check for PermissionSysconsoleReadComplianceDataRetentionPolicy

* revert package-lock

* review suggestions

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Scott Bishel
2024-09-17 15:19:03 -06:00
коммит произвёл GitHub
родитель d99961f106
Коммит c12e6d9e9c
4 изменённых файлов: 147 добавлений и 2 удалений

Просмотреть файл

@@ -356,6 +356,15 @@ func (o *Channel) GetOtherUserIdForDM(userId string) string {
return otherUserId
}
func (o *Channel) Sanitize() Channel {
return Channel{
Id: o.Id,
TeamId: o.TeamId,
Type: o.Type,
DisplayName: o.DisplayName,
}
}
func (t ChannelType) MarshalJSON() ([]byte, error) {
return json.Marshal(string(t))
}

Просмотреть файл

@@ -114,3 +114,49 @@ func TestGetGroupNameFromUserIds(t *testing.T) {
require.LessOrEqual(t, len(name), ChannelNameMaxLength)
}
func TestSanitize(t *testing.T) {
schemaId := NewId()
o := Channel{
Id: NewId(),
CreateAt: 1,
UpdateAt: 1,
DeleteAt: 1,
Name: NewId(),
DisplayName: NewId(),
Header: NewId(),
Purpose: NewId(),
LastPostAt: 1,
TotalMsgCount: 1,
ExtraUpdateAt: 1,
CreatorId: NewId(),
SchemeId: &schemaId,
Props: make(map[string]any),
GroupConstrained: NewPointer(true),
Shared: NewPointer(true),
TotalMsgCountRoot: 1,
PolicyID: &schemaId,
LastRootPostAt: 1,
}
s := o.Sanitize()
require.NotEqual(t, "", s.Id)
require.Equal(t, int64(0), s.CreateAt)
require.Equal(t, int64(0), s.UpdateAt)
require.Equal(t, int64(0), s.DeleteAt)
require.Equal(t, "", s.Name)
require.NotEqual(t, "", s.DisplayName)
require.Equal(t, "", s.Header)
require.Equal(t, "", s.Purpose)
require.Equal(t, int64(0), s.LastPostAt)
require.Equal(t, int64(0), s.TotalMsgCount)
require.Equal(t, int64(0), s.ExtraUpdateAt)
require.Equal(t, "", s.CreatorId)
require.Nil(t, s.SchemeId)
require.Nil(t, s.Props)
require.Nil(t, s.GroupConstrained)
require.Nil(t, s.Shared)
require.Equal(t, int64(0), s.TotalMsgCountRoot)
require.Nil(t, s.PolicyID)
require.Equal(t, int64(0), s.LastRootPostAt)
}