mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
MM-56822 Update logic around permissions and sanitization (#26227)
* update logic around permissions and sanitization * add test * add comments * fix test --------- Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
parent
01e1eebc07
commit
f90b3d4141
@ -326,7 +326,19 @@ func TestGetTeamSanitization(t *testing.T) {
|
||||
require.Empty(t, rteam.InviteId, "should have sanitized inviteid")
|
||||
})
|
||||
|
||||
t.Run("team admin", func(t *testing.T) {
|
||||
t.Run("team admin default removed", func(t *testing.T) {
|
||||
// the above test removes PermissionInviteUser from TeamUser,
|
||||
// which also removes it from TeamAdmin. By default, TeamAdmin
|
||||
// permission is inherited from TeamUser.
|
||||
rteam, _, err := th.Client.GetTeam(context.Background(), team.Id, "")
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
||||
require.Empty(t, rteam.InviteId, "should have sanitized inviteid")
|
||||
})
|
||||
|
||||
t.Run("team admin permission re-added", func(t *testing.T) {
|
||||
th.AddPermissionToRole(model.PermissionInviteUser.Id, model.TeamAdminRoleId)
|
||||
rteam, _, err := th.Client.GetTeam(context.Background(), team.Id, "")
|
||||
require.NoError(t, err)
|
||||
|
||||
@ -1452,7 +1464,19 @@ func TestGetTeamByNameSanitization(t *testing.T) {
|
||||
require.Empty(t, rteam.InviteId, "should have sanitized inviteid")
|
||||
})
|
||||
|
||||
t.Run("team admin/non-admin", func(t *testing.T) {
|
||||
t.Run("team admin/non-admin without invite permission", func(t *testing.T) {
|
||||
// the above test removes PermissionInviteUser from TeamUser,
|
||||
// which also removes it from TeamAdmin. By default, TeamAdmin
|
||||
// permission is inherited from TeamUser.
|
||||
rteam, _, err := th.Client.GetTeamByName(context.Background(), team.Name, "")
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
||||
require.Empty(t, rteam.InviteId, "should have sanitized inviteid")
|
||||
})
|
||||
|
||||
t.Run("team admin/non-admin with invite permission", func(t *testing.T) {
|
||||
th.AddPermissionToRole(model.PermissionInviteUser.Id, model.TeamAdminRoleId)
|
||||
rteam, _, err := th.Client.GetTeamByName(context.Background(), team.Name, "")
|
||||
require.NoError(t, err)
|
||||
|
||||
@ -1861,6 +1885,8 @@ func TestGetTeamsForUserSanitization(t *testing.T) {
|
||||
|
||||
client := th.CreateClient()
|
||||
th.RemovePermissionFromRole(model.PermissionInviteUser.Id, model.TeamUserRoleId)
|
||||
defer th.AddPermissionToRole(model.PermissionInviteUser.Id, model.TeamUserRoleId)
|
||||
|
||||
th.LoginBasic2WithClient(client)
|
||||
|
||||
rteams, _, err := client.GetTeamsForUser(context.Background(), th.BasicUser2.Id, "")
|
||||
|
@ -1906,19 +1906,22 @@ func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError) {
|
||||
}
|
||||
|
||||
func (a *App) SanitizeTeam(session model.Session, team *model.Team) *model.Team {
|
||||
if a.SessionHasPermissionToTeam(session, team.Id, model.PermissionManageTeam) {
|
||||
manageTeamPermission := a.SessionHasPermissionToTeam(session, team.Id, model.PermissionManageTeam)
|
||||
inviteUserPermission := a.SessionHasPermissionToTeam(session, team.Id, model.PermissionInviteUser)
|
||||
|
||||
if manageTeamPermission && inviteUserPermission {
|
||||
return team
|
||||
}
|
||||
|
||||
if a.SessionHasPermissionToTeam(session, team.Id, model.PermissionInviteUser) {
|
||||
email := team.Email
|
||||
inviteId := team.InviteId
|
||||
team.Sanitize()
|
||||
team.InviteId = inviteId
|
||||
return team
|
||||
|
||||
if manageTeamPermission {
|
||||
team.Email = email
|
||||
}
|
||||
if inviteUserPermission {
|
||||
team.InviteId = inviteId
|
||||
}
|
||||
|
||||
team.Sanitize()
|
||||
|
||||
return team
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user