summaryrefslogtreecommitdiffstats
path: root/model/gitlab.go
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2015-08-13 12:03:47 -0400
committerJoramWilander <jwawilander@gmail.com>2015-08-14 12:37:08 -0400
commite27db2ed63fd3c9c686c049a9b9049a907985ecc (patch)
tree701fcc97846e658e34c5d7ffada5b1d51a4920a9 /model/gitlab.go
parentb9aef9f2a6b90663cb7ba4ff9e42560c145b631d (diff)
downloadchat-e27db2ed63fd3c9c686c049a9b9049a907985ecc.tar.gz
chat-e27db2ed63fd3c9c686c049a9b9049a907985ecc.tar.bz2
chat-e27db2ed63fd3c9c686c049a9b9049a907985ecc.zip
initial server implementation for using google as a single-sign-on oauth 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)
+}