Unknwon 10 years ago
parent
commit
0b785ad967
2 changed files with 13 additions and 9 deletions
  1. 11 8
      models/login.go
  2. 2 1
      modules/auth/auth.go

+ 11 - 8
models/login.go

@@ -18,6 +18,7 @@ import (
 
 	"github.com/gogits/gogs/modules/auth/ldap"
 	"github.com/gogits/gogs/modules/log"
+	"github.com/gogits/gogs/modules/uuid"
 )
 
 type LoginType int
@@ -228,30 +229,32 @@ func UserSignIn(uname, passwd string) (*User, error) {
 // Query if name/passwd can login against the LDAP direcotry pool
 // Create a local user if success
 // Return the same LoginUserPlain semantic
+// FIXME: https://github.com/gogits/gogs/issues/672
 func LoginUserLdapSource(u *User, name, passwd string, sourceId int64, cfg *LDAPConfig, autoRegister bool) (*User, error) {
 	mail, logged := cfg.Ldapsource.SearchEntry(name, passwd)
 	if !logged {
-		// user not in LDAP, do nothing
+		// User not in LDAP, do nothing
 		return nil, ErrUserNotExist
 	}
 	if !autoRegister {
 		return u, nil
 	}
 
-	// fake a local user creation
+	// Fallback.
+	if len(mail) == 0 {
+		mail = uuid.NewV4().String() + "@localhost"
+	}
+
 	u = &User{
-		LowerName:   strings.ToLower(name),
-		Name:        strings.ToLower(name),
+		Name:        name,
 		LoginType:   LDAP,
 		LoginSource: sourceId,
 		LoginName:   name,
-		IsActive:    true,
 		Passwd:      passwd,
 		Email:       mail,
+		IsActive:    true,
 	}
-
-	err := CreateUser(u)
-	return u, err
+	return u, CreateUser(u)
 }
 
 type loginAuth struct {

+ 2 - 1
modules/auth/auth.go

@@ -17,6 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/log"
 	"github.com/gogits/gogs/modules/setting"
+	"github.com/gogits/gogs/modules/uuid"
 )
 
 // SignedInId returns the id of signed in user.
@@ -83,7 +84,7 @@ func SignedInUser(req *http.Request, sess session.Store) (*models.User, bool) {
 					if setting.Service.EnableReverseProxyAutoRegister {
 						u := &models.User{
 							Name:     webAuthUser,
-							Email:    webAuthUser + "@gogs.io",
+							Email:    uuid.NewV4().String() + "@localhost",
 							Passwd:   webAuthUser,
 							IsActive: true,
 						}