diff options
-rw-r--r-- | api4/user.go | 2 | ||||
-rw-r--r-- | api4/user_test.go | 16 | ||||
-rw-r--r-- | app/user.go | 13 |
3 files changed, 30 insertions, 1 deletions
diff --git a/api4/user.go b/api4/user.go index 66f1b7a88..4eb4479c2 100644 --- a/api4/user.go +++ b/api4/user.go @@ -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()) } diff --git a/api4/user_test.go b/api4/user_test.go index 10c0a22d8..fe53229a5 100644 --- a/api4/user_test.go +++ b/api4/user_test.go @@ -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 { diff --git a/app/user.go b/app/user.go index 850b26f1b..40651f56a 100644 --- a/app/user.go +++ b/app/user.go @@ -105,6 +105,19 @@ func CreateUserWithInviteId(user *model.User, inviteId string, siteURL string) ( return ruser, nil } +func CreateUserAsAdmin(user *model.User, siteURL string) (*model.User, *model.AppError) { + ruser, err := CreateUser(user) + if err != nil { + return nil, err + } + + if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, siteURL); err != nil { + l4g.Error(err.Error()) + } + + return ruser, nil +} + func CreateUserFromSignup(user *model.User, siteURL string) (*model.User, *model.AppError) { if err := IsUserSignUpAllowed(); err != nil { return nil, err |