From 58358ddd7cd0152bf16a7326e1d595524fb51246 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Tue, 8 Dec 2015 13:38:43 -0500 Subject: Some refactoring --- model/config.go | 43 +++++++++++++++++++++++++- model/gitlab.go | 62 ------------------------------------- model/gitlab/gitlab.go | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ model/version.go | 1 + 4 files changed, 127 insertions(+), 63 deletions(-) delete mode 100644 model/gitlab.go create mode 100644 model/gitlab/gitlab.go (limited to 'model') diff --git a/model/config.go b/model/config.go index 06cb9829e..38ef81a85 100644 --- a/model/config.go +++ b/model/config.go @@ -20,6 +20,7 @@ const ( DATABASE_DRIVER_POSTGRES = "postgres" SERVICE_GITLAB = "gitlab" + SERVICE_GOOGLE = "google" ) type ServiceSettings struct { @@ -133,6 +134,26 @@ type TeamSettings struct { EnableTeamListing *bool } +type LdapSettings struct { + // Basic + Enable *bool + LdapServer *string + LdapPort *int + BaseDN *string + BindUsername *string + BindPassword *string + + // User Mapping + FirstNameAttribute *string + LastNameAttribute *string + EmailAttribute *string + UsernameAttribute *string + IdAttribute *string + + // Advansed + QueryTimeout *int +} + type Config struct { ServiceSettings ServiceSettings TeamSettings TeamSettings @@ -144,6 +165,8 @@ type Config struct { PrivacySettings PrivacySettings SupportSettings SupportSettings GitLabSettings SSOSettings + GoogleSettings SSOSettings + LdapSettings LdapSettings } func (o *Config) ToJson() string { @@ -156,8 +179,11 @@ func (o *Config) ToJson() string { } func (o *Config) GetSSOService(service string) *SSOSettings { - if service == SERVICE_GITLAB { + switch service { + case SERVICE_GITLAB: return &o.GitLabSettings + case SERVICE_GOOGLE: + return &o.GoogleSettings } return nil @@ -251,6 +277,21 @@ func (o *Config) SetDefaults() { o.SupportSettings.SupportEmail = new(string) *o.SupportSettings.SupportEmail = "feedback@mattermost.com" } + + if o.LdapSettings.LdapPort == nil { + o.LdapSettings.LdapPort = new(int) + *o.LdapSettings.LdapPort = 389 + } + + if o.LdapSettings.QueryTimeout == nil { + o.LdapSettings.QueryTimeout = new(int) + *o.LdapSettings.QueryTimeout = 60 + } + + if o.LdapSettings.Enable == nil { + o.LdapSettings.Enable = new(bool) + *o.LdapSettings.Enable = false + } } func (o *Config) IsValid() *AppError { diff --git a/model/gitlab.go b/model/gitlab.go deleted file mode 100644 index 2a8756807..000000000 --- a/model/gitlab.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package model - -import ( - "encoding/json" - "io" - "strconv" - "strings" -) - -const ( - USER_AUTH_SERVICE_GITLAB = "gitlab" -) - -type GitLabUser struct { - Id int64 `json:"id"` - Username string `json:"username"` - Login string `json:"login"` - Email string `json:"email"` - Name string `json:"name"` -} - -func UserFromGitLabUser(glu *GitLabUser) *User { - user := &User{} - username := glu.Username - if username == "" { - username = glu.Login - } - user.Username = CleanUsername(username) - splitName := strings.Split(glu.Name, " ") - if len(splitName) == 2 { - user.FirstName = splitName[0] - user.LastName = splitName[1] - } else if len(splitName) >= 2 { - user.FirstName = splitName[0] - user.LastName = strings.Join(splitName[1:], " ") - } else { - user.FirstName = glu.Name - } - user.Email = glu.Email - user.AuthData = strconv.FormatInt(glu.Id, 10) - user.AuthService = USER_AUTH_SERVICE_GITLAB - - return user -} - -func GitLabUserFromJson(data io.Reader) *GitLabUser { - decoder := json.NewDecoder(data) - var glu GitLabUser - err := decoder.Decode(&glu) - if err == nil { - return &glu - } else { - return nil - } -} - -func (glu *GitLabUser) GetAuthData() string { - return strconv.FormatInt(glu.Id, 10) -} diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go new file mode 100644 index 000000000..8b96c64f6 --- /dev/null +++ b/model/gitlab/gitlab.go @@ -0,0 +1,84 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package oauthgitlab + +import ( + "encoding/json" + "github.com/mattermost/platform/einterfaces" + "github.com/mattermost/platform/model" + "io" + "strconv" + "strings" +) + +const ( + USER_AUTH_SERVICE_GITLAB = "gitlab" +) + +type GitLabProvider struct { +} + +type GitLabUser struct { + Id int64 `json:"id"` + Username string `json:"username"` + Login string `json:"login"` + Email string `json:"email"` + Name string `json:"name"` +} + +func init() { + provider := &GitLabProvider{} + einterfaces.RegisterOauthProvider(USER_AUTH_SERVICE_GITLAB, provider) +} + +func userFromGitLabUser(glu *GitLabUser) *model.User { + user := &model.User{} + username := glu.Username + if username == "" { + username = glu.Login + } + user.Username = model.CleanUsername(username) + splitName := strings.Split(glu.Name, " ") + if len(splitName) == 2 { + user.FirstName = splitName[0] + user.LastName = splitName[1] + } else if len(splitName) >= 2 { + user.FirstName = splitName[0] + user.LastName = strings.Join(splitName[1:], " ") + } else { + user.FirstName = glu.Name + } + user.Email = glu.Email + user.AuthData = strconv.FormatInt(glu.Id, 10) + user.AuthService = USER_AUTH_SERVICE_GITLAB + + return user +} + +func gitLabUserFromJson(data io.Reader) *GitLabUser { + decoder := json.NewDecoder(data) + var glu GitLabUser + err := decoder.Decode(&glu) + if err == nil { + return &glu + } else { + return nil + } +} + +func (glu *GitLabUser) getAuthData() string { + return strconv.FormatInt(glu.Id, 10) +} + +func (m *GitLabProvider) GetIdentifier() string { + return USER_AUTH_SERVICE_GITLAB +} + +func (m *GitLabProvider) GetUserFromJson(data io.Reader) *model.User { + return userFromGitLabUser(gitLabUserFromJson(data)) +} + +func (m *GitLabProvider) GetAuthDataFromJson(data io.Reader) string { + return gitLabUserFromJson(data).getAuthData() +} diff --git a/model/version.go b/model/version.go index 5e41a28d1..142ddb371 100644 --- a/model/version.go +++ b/model/version.go @@ -27,6 +27,7 @@ var CurrentVersion string = versions[0] var BuildNumber = "_BUILD_NUMBER_" var BuildDate = "_BUILD_DATE_" var BuildHash = "_BUILD_HASH_" +var BuildEnterpriseReady = "_BUILD_ENTERPRISE_READY_" func SplitVersion(version string) (int64, int64, int64) { parts := strings.Split(version, ".") -- cgit v1.2.3-1-g7c22