You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1013 B

10 years ago
  1. // Copyright github.com/juju2013. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "strings"
  7. "github.com/gogits/gogs/modules/auth/ldap"
  8. "github.com/gogits/gogs/modules/log"
  9. )
  10. // Query if name/passwd can login against the LDAP direcotry pool
  11. // Create a local user if success
  12. // Return the same LoginUserPlain semantic
  13. func LoginUserLdap(name, passwd string) (*User, error) {
  14. mail, logged := ldap.LoginUser(name, passwd)
  15. if !logged {
  16. // user not in LDAP, do nothing
  17. return nil, ErrUserNotExist
  18. }
  19. // fake a local user creation
  20. user := User{
  21. LowerName: strings.ToLower(name),
  22. Name: strings.ToLower(name),
  23. LoginType: 389,
  24. IsActive: true,
  25. Passwd: passwd,
  26. Email: mail}
  27. _, err := RegisterUser(&user)
  28. if err != nil {
  29. log.Debug("LDAP local user %s found (%s) ", name, err)
  30. }
  31. // simulate local user login
  32. localUser, err2 := GetUserByName(user.Name)
  33. return localUser, err2
  34. }