user.go 776 B

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