summaryrefslogtreecommitdiffstats
path: root/model/gitlab.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-08-18 08:47:35 -0400
committerChristopher Speller <crspeller@gmail.com>2015-08-18 08:47:35 -0400
commit2f1dcf6f5267ecf85d14c8a36a9d3059a5d41218 (patch)
tree1de5578c9050a33635960fc046fdf97339254be0 /model/gitlab.go
parent96d1eb1c800a427e31e63970e57d0824a3bc91e3 (diff)
parenta7f09be9783f3354ab38d4fb4fb82085241d018f (diff)
downloadchat-2f1dcf6f5267ecf85d14c8a36a9d3059a5d41218.tar.gz
chat-2f1dcf6f5267ecf85d14c8a36a9d3059a5d41218.tar.bz2
chat-2f1dcf6f5267ecf85d14c8a36a9d3059a5d41218.zip
Merge pull request #381 from mattermost/mm-1705
MM-1705 add google as an oauth single-sign-on service
Diffstat (limited to 'model/gitlab.go')
-rw-r--r--model/gitlab.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/model/gitlab.go b/model/gitlab.go
new file mode 100644
index 000000000..9adcac189
--- /dev/null
+++ b/model/gitlab.go
@@ -0,0 +1,57 @@
+// Copyright (c) 2015 Spinpunch, 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"`
+ Email string `json:"email"`
+ Name string `json:"name"`
+}
+
+func UserFromGitLabUser(glu *GitLabUser) *User {
+ user := &User{}
+ user.Username = glu.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)
+}