summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api4/user.go2
-rw-r--r--api4/user_test.go16
-rw-r--r--app/user.go13
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