login.go 656 B

1234567891011121314151617181920212223242526272829303132
  1. package user
  2. import (
  3. "errors"
  4. "github.com/0xJacky/Nginx-UI/model"
  5. "github.com/0xJacky/Nginx-UI/query"
  6. "golang.org/x/crypto/bcrypt"
  7. )
  8. var (
  9. ErrPasswordIncorrect = errors.New("password incorrect")
  10. ErrUserBanned = errors.New("user banned")
  11. )
  12. func Login(name string, password string) (user *model.Auth, err error) {
  13. u := query.Auth
  14. user, err = u.Where(u.Name.Eq(name)).First()
  15. if err != nil {
  16. return nil, ErrPasswordIncorrect
  17. }
  18. if err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)); err != nil {
  19. return nil, ErrPasswordIncorrect
  20. }
  21. if !user.Status {
  22. return nil, ErrUserBanned
  23. }
  24. return
  25. }