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
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
8d36a1e96a
Коммит
8b868828bf
@@ -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 {
|
||||
|
||||
13
app/user.go
13
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
|
||||
|
||||
Ссылка в новой задаче
Block a user