MM-55608:check invite guest permission (#25708)

* check for invite_guest permission when inviting guests

* update description for invite_guest

* check team permission first

* update returned error

* update from review comments

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Scott Bishel
2024-01-15 09:51:50 -07:00
коммит произвёл GitHub
родитель b162267387
Коммит 68be318fa2
4 изменённых файлов: 53 добавлений и 12 удалений

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

@@ -867,6 +867,12 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
if !c.App.SessionHasPermissionToTeam(*c.AppContext.Session(), c.Params.TeamId, model.PermissionAddUserToTeam) {
c.SetPermissionError(model.PermissionAddUserToTeam)
return
}
canInviteGuests := c.App.SessionHasPermissionToTeam(*c.AppContext.Session(), c.Params.TeamId, model.PermissionInviteGuest)
var userIDs []string
for _, member := range members {
if member.TeamId != c.Params.TeamId {
@@ -879,14 +885,21 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
// if user cannot invite guests, check if any users are guest users.
if !canInviteGuests {
user, err := c.App.GetUser(member.UserId)
if err != nil {
c.Err = model.NewAppError("addTeamMembers", "api.team.user.missing_account", nil, "", http.StatusNotFound).Wrap(err)
return
}
if user.IsGuest() {
c.SetPermissionError(model.PermissionInviteGuest)
return
}
}
userIDs = append(userIDs, member.UserId)
}
if !c.App.SessionHasPermissionToTeam(*c.AppContext.Session(), c.Params.TeamId, model.PermissionAddUserToTeam) {
c.SetPermissionError(model.PermissionAddUserToTeam)
return
}
membersWithErrors, appErr := c.App.AddTeamMembers(c.AppContext, c.Params.TeamId, userIDs, c.AppContext.Session().UserId, graceful)
if len(membersWithErrors) != 0 {