user.go 776 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package service
  2. import (
  3. "time"
  4. )
  5. import (
  6. "auth-server/common"
  7. "auth-server/dto"
  8. "auth-server/models"
  9. )
  10. func Login(username string, password string) (*dto.UserInfoResp, error) {
  11. var user models.User
  12. err := models.DB.Model(&models.User{}).First(&user, "name = ?", username).Error
  13. if err != nil {
  14. return nil, err
  15. }
  16. if ok := user.CompareHashAndPassword([]byte(password)); !ok {
  17. return nil, common.InvalidUsernameOrPasswd
  18. }
  19. user.LastLoginTime = time.Now()
  20. err = models.DB.Save(&user).Error
  21. if err != nil {
  22. return nil, err
  23. }
  24. token, expire, err := common.NewToken(user.ID, user.Name)
  25. if err != nil {
  26. return nil, err
  27. }
  28. return &dto.UserInfoResp{
  29. Token: token,
  30. Expire: expire,
  31. Uid: user.ID,
  32. Name: user.Name,
  33. Avatar: user.Avatar,
  34. }, nil
  35. }