summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/user.go4
-rw-r--r--app/user_test.go34
-rw-r--r--i18n/en.json4
-rw-r--r--model/gitlab/gitlab.go9
4 files changed, 51 insertions, 0 deletions
diff --git a/app/user.go b/app/user.go
index a0cb2a49f..9f428089b 100644
--- a/app/user.go
+++ b/app/user.go
@@ -218,6 +218,10 @@ func createUser(user *model.User) (*model.User, *model.AppError) {
}
func CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
+ if !utils.Cfg.TeamSettings.EnableUserCreation {
+ return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented)
+ }
+
var user *model.User
provider := einterfaces.GetOauthProvider(service)
if provider == nil {
diff --git a/app/user_test.go b/app/user_test.go
index 5b994d219..0dba86241 100644
--- a/app/user_test.go
+++ b/app/user_test.go
@@ -4,7 +4,12 @@
package app
import (
+ "strings"
"testing"
+
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/model/gitlab"
+ "github.com/mattermost/platform/utils"
)
func TestIsUsernameTaken(t *testing.T) {
@@ -51,3 +56,32 @@ func TestCheckUserDomain(t *testing.T) {
}
}
}
+
+func TestCreateOAuthUser(t *testing.T) {
+ th := Setup().InitBasic()
+ glUser := oauthgitlab.GitLabUser{Id: 1000, Username: model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"}
+
+ json := glUser.ToJson()
+ user, err := CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if user.Username != glUser.Username {
+ t.Fatal("usernames didn't match")
+ }
+
+ PermanentDeleteUser(user)
+
+ userCreation := utils.Cfg.TeamSettings.EnableUserCreation
+ defer func() {
+ utils.Cfg.TeamSettings.EnableUserCreation = userCreation
+ }()
+ utils.Cfg.TeamSettings.EnableUserCreation = false
+
+ _, err = CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
+ if err == nil {
+ t.Fatal("should have failed - user creation disabled")
+ }
+
+}
diff --git a/i18n/en.json b/i18n/en.json
index 138933bd6..30a258137 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -2372,6 +2372,10 @@
"translation": "User sign-up with email is disabled."
},
{
+ "id": "api.user.create_user.disabled.app_error",
+ "translation": "User creation is disabled."
+ },
+ {
"id": "api.user.create_user.signup_link_expired.app_error",
"translation": "The signup link has expired"
},
diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go
index e189ee68d..270d62d8b 100644
--- a/model/gitlab/gitlab.go
+++ b/model/gitlab/gitlab.go
@@ -65,6 +65,15 @@ func gitLabUserFromJson(data io.Reader) *GitLabUser {
}
}
+func (glu *GitLabUser) ToJson() string {
+ b, err := json.Marshal(glu)
+ if err != nil {
+ return ""
+ } else {
+ return string(b)
+ }
+}
+
func (glu *GitLabUser) IsValid() bool {
if glu.Id == 0 {
return false