PLT 6125 Allow system admins to create users on closed servers (#5908)

* Update user.go

Added method to create user accounts using a privileged system_admin account

* Update user.go

Added respective method to handle the the APIv4 call to create users with privileged account(system_admin) by passing server restrictions of EnableUserCreation and/or EnableOpenServer set to false.

* Update user_test.go

Added test case
Этот коммит содержится в:
prixone
2017-03-29 22:05:32 -03:00
коммит произвёл Joram Wilander
родитель 8d36a1e96a
Коммит 8b868828bf
3 изменённых файлов: 30 добавлений и 1 удалений

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

@@ -72,6 +72,8 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"), c.GetSiteURL())
} else if len(inviteId) > 0 {
ruser, err = app.CreateUserWithInviteId(user, inviteId, c.GetSiteURL())
} else if c.IsSystemAdmin() {
ruser, err = app.CreateUserAsAdmin(user, c.GetSiteURL())
} else {
ruser, err = app.CreateUserFromSignup(user, c.GetSiteURL())
}

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

@@ -15,9 +15,10 @@ import (
)
func TestCreateUser(t *testing.T) {
th := Setup().InitBasic()
th := Setup().InitBasic().InitSystemAdmin()
defer TearDown()
Client := th.Client
AdminClient := th.SystemAdminClient
user := model.User{Email: GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.ROLE_SYSTEM_ADMIN.Id + " " + model.ROLE_SYSTEM_USER.Id}
@@ -64,6 +65,19 @@ func TestCreateUser(t *testing.T) {
CheckErrorMessage(t, resp, "model.user.is_valid.username.app_error")
CheckBadRequestStatus(t, resp)
openServer := *utils.Cfg.TeamSettings.EnableOpenServer
canCreateAccount := utils.Cfg.TeamSettings.EnableUserCreation
defer func() {
*utils.Cfg.TeamSettings.EnableOpenServer = openServer
utils.Cfg.TeamSettings.EnableUserCreation = canCreateAccount
}()
*utils.Cfg.TeamSettings.EnableOpenServer = false
utils.Cfg.TeamSettings.EnableUserCreation = false
user2 := &model.User{Email: GenerateTestEmail(), Password: "Password1", Username: GenerateTestUsername()}
_, resp = AdminClient.CreateUser(user2)
CheckNoError(t, resp)
if r, err := Client.DoApiPost("/users", "garbage"); err == nil {
t.Fatal("should have errored")
} else {