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>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b162267387
Коммит
68be318fa2
@@ -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 {
|
||||
|
||||
Ссылка в новой задаче
Block a user