aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorjuju2013 <cahterinedesienne@gmail.com>2014-04-22 18:55:27 +0200
committerjuju2013 <catherinedesienne@gmail.com>2014-04-23 23:07:54 +0200
commitefc05ea1dec5a60c95763fc5158d60b45ef46d8f (patch)
treec50ebba5664215d010835bbbd7234c0fa50a87d7 /models
parentdbdaf934e1b8fab06361266268bb55d30b352f37 (diff)
downloadgitea-efc05ea1dec5a60c95763fc5158d60b45ef46d8f.tar.gz
gitea-efc05ea1dec5a60c95763fc5158d60b45ef46d8f.zip
initial support for LDAP authentication/MSAD
Diffstat (limited to 'models')
-rw-r--r--models/ldap.go38
-rw-r--r--models/user.go1
2 files changed, 39 insertions, 0 deletions
diff --git a/models/ldap.go b/models/ldap.go
new file mode 100644
index 0000000000..cc9058765f
--- /dev/null
+++ b/models/ldap.go
@@ -0,0 +1,38 @@
+// Copyright github.com/juju2013. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "strings"
+
+ "github.com/gogits/gogs/modules/auth/ldap"
+ "github.com/gogits/gogs/modules/log"
+)
+
+// Query if name/passwd can login against the LDAP direcotry pool
+// Create a local user if success
+// Return the same LoginUserPlain semantic
+func LoginUserLdap(name, passwd string) (*User, error) {
+ mail, logged := ldap.LoginUser(name, passwd)
+ if !logged {
+ // user not in LDAP, do nothing
+ return nil, ErrUserNotExist
+ }
+ // fake a local user creation
+ user := User{
+ LowerName: strings.ToLower(name),
+ Name: strings.ToLower(name),
+ LoginType: 389,
+ IsActive: true,
+ Passwd: passwd,
+ Email: mail}
+ _, err := RegisterUser(&user)
+ if err != nil {
+ log.Debug("LDAP local user %s fond (%s) ", name, err)
+ }
+ // simulate local user login
+ localUser, err2 := GetUserByName(user.Name)
+ return localUser, err2
+}
diff --git a/models/user.go b/models/user.go
index ab43df7a1e..df1eb985c2 100644
--- a/models/user.go
+++ b/models/user.go
@@ -125,6 +125,7 @@ func GetUserSalt() string {
// RegisterUser creates record of a new user.
func RegisterUser(user *User) (*User, error) {
+
if !IsLegalName(user.Name) {
return nil, ErrUserNameIllegal
}