MM-20977 - Inviting multiple users with valid/allowed and inva… (#13372)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
51a61f6bc1
Коммит
e77ef9733c
13
api4/team.go
13
api4/team.go
@@ -522,6 +522,8 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
graceful := r.URL.Query().Get("graceful") != ""
|
||||
|
||||
c.RequireTeamId()
|
||||
if c.Err != nil {
|
||||
return
|
||||
@@ -587,7 +589,7 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
members, err = c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session.UserId)
|
||||
membersWithErrors, err := c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session.UserId, graceful)
|
||||
|
||||
if err != nil {
|
||||
c.Err = err
|
||||
@@ -595,7 +597,14 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
w.WriteHeader(http.StatusCreated)
|
||||
w.Write([]byte(model.TeamMembersToJson(members)))
|
||||
|
||||
if graceful {
|
||||
// in 'graceful' mode we allow a different return value, notifying the client which users were not added
|
||||
w.Write([]byte(model.TeamMembersWithErrorToJson(membersWithErrors)))
|
||||
} else {
|
||||
w.Write([]byte(model.TeamMembersToJson(model.TeamMembersWithErrorToTeamMembers(membersWithErrors))))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func removeTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -1651,6 +1651,66 @@ func TestAddTeamMemberMyself(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestAddTeamMembersDomainConstrained(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
client := th.SystemAdminClient
|
||||
team := th.BasicTeam
|
||||
team.AllowedDomains = "domain1.com, domain2.com"
|
||||
_, response := client.UpdateTeam(team)
|
||||
require.Nil(t, response.Error)
|
||||
|
||||
// create two users on allowed domains
|
||||
user1, response := client.CreateUser(&model.User{
|
||||
Email: "user@domain1.com",
|
||||
Password: "Pa$$word11",
|
||||
Username: GenerateTestUsername(),
|
||||
})
|
||||
require.Nil(t, response.Error)
|
||||
user2, response := client.CreateUser(&model.User{
|
||||
Email: "user@domain2.com",
|
||||
Password: "Pa$$word11",
|
||||
Username: GenerateTestUsername(),
|
||||
})
|
||||
require.Nil(t, response.Error)
|
||||
|
||||
userList := []string{
|
||||
user1.Id,
|
||||
user2.Id,
|
||||
}
|
||||
|
||||
// validate that they can be added
|
||||
tm, response := client.AddTeamMembers(team.Id, userList)
|
||||
require.Nil(t, response.Error)
|
||||
require.Len(t, tm, 2)
|
||||
|
||||
// cleanup
|
||||
_, response = client.RemoveTeamMember(team.Id, user1.Id)
|
||||
require.Nil(t, response.Error)
|
||||
_, response = client.RemoveTeamMember(team.Id, user2.Id)
|
||||
require.Nil(t, response.Error)
|
||||
|
||||
// disable one of the allowed domains
|
||||
team.AllowedDomains = "domain1.com"
|
||||
_, response = client.UpdateTeam(team)
|
||||
require.Nil(t, response.Error)
|
||||
|
||||
// validate that they cannot be added
|
||||
_, response = client.AddTeamMembers(team.Id, userList)
|
||||
require.NotNil(t, response.Error)
|
||||
|
||||
// validate that one user can be added gracefully
|
||||
members, response := client.AddTeamMembersGracefully(team.Id, userList)
|
||||
require.Nil(t, response.Error)
|
||||
require.Len(t, members, 2)
|
||||
require.NotNil(t, members[0].Member)
|
||||
require.NotNil(t, members[1].Error)
|
||||
require.Equal(t, members[0].UserId, user1.Id)
|
||||
require.Equal(t, members[1].UserId, user2.Id)
|
||||
require.Nil(t, members[0].Error)
|
||||
require.Nil(t, members[1].Member)
|
||||
}
|
||||
|
||||
func TestAddTeamMembers(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user