Some refactoring
Этот коммит содержится в:
@@ -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 {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package model
|
||||
package oauthgitlab
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/mattermost/platform/einterfaces"
|
||||
"github.com/mattermost/platform/model"
|
||||
"io"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -14,6 +16,9 @@ const (
|
||||
USER_AUTH_SERVICE_GITLAB = "gitlab"
|
||||
)
|
||||
|
||||
type GitLabProvider struct {
|
||||
}
|
||||
|
||||
type GitLabUser struct {
|
||||
Id int64 `json:"id"`
|
||||
Username string `json:"username"`
|
||||
@@ -22,13 +27,18 @@ type GitLabUser struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
func UserFromGitLabUser(glu *GitLabUser) *User {
|
||||
user := &User{}
|
||||
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 = CleanUsername(username)
|
||||
user.Username = model.CleanUsername(username)
|
||||
splitName := strings.Split(glu.Name, " ")
|
||||
if len(splitName) == 2 {
|
||||
user.FirstName = splitName[0]
|
||||
@@ -46,7 +56,7 @@ func UserFromGitLabUser(glu *GitLabUser) *User {
|
||||
return user
|
||||
}
|
||||
|
||||
func GitLabUserFromJson(data io.Reader) *GitLabUser {
|
||||
func gitLabUserFromJson(data io.Reader) *GitLabUser {
|
||||
decoder := json.NewDecoder(data)
|
||||
var glu GitLabUser
|
||||
err := decoder.Decode(&glu)
|
||||
@@ -57,6 +67,18 @@ func GitLabUserFromJson(data io.Reader) *GitLabUser {
|
||||
}
|
||||
}
|
||||
|
||||
func (glu *GitLabUser) GetAuthData() string {
|
||||
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()
|
||||
}
|
||||
@@ -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, ".")
|
||||
|
||||
Ссылка в новой задаче
Block a user