"github.com/gogits/gogs/modules/auth/ldap"
"github.com/gogits/gogs/modules/log"
+ "github.com/gogits/gogs/modules/uuid"
)
type LoginType int
// 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 {
"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.
if setting.Service.EnableReverseProxyAutoRegister {
u := &models.User{
Name: webAuthUser,
- Email: webAuthUser + "@gogs.io",
+ Email: uuid.NewV4().String() + "@localhost",
Passwd: webAuthUser,
IsActive: true,
}