login.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package business
  2. import (
  3. "time"
  4. "github.com/jinzhu/gorm"
  5. "github.com/spf13/viper"
  6. "shopperthree_manage_v2/app/models"
  7. "shopperthree_manage_v2/pkg/ierr"
  8. "shopperthree_manage_v2/pkg/jwt"
  9. "shopperthree_manage_v2/pkg/util"
  10. )
  11. func Login(req *models.LoginRequest) (*models.LoginReply, error) {
  12. if req.Phone == "" || req.Password == "" {
  13. return nil, ierr.NewIError(ierr.ParamErr, "missing key param")
  14. }
  15. tAdmin := new(models.TAdmin)
  16. tAdmin.Phone = req.Phone
  17. admin, err := tAdmin.ShowByPhone()
  18. if err != nil {
  19. if gorm.IsRecordNotFoundError(err) {
  20. return nil, ierr.NewIError(ierr.PhoneNotExists, "phone not exists")
  21. }
  22. return nil, ierr.NewIError(ierr.QueryDataFail, err.Error())
  23. }
  24. if admin.Password != util.Sha256(req.Password) {
  25. return nil, ierr.NewIError(ierr.PasswordErr, "password error")
  26. }
  27. //密码正确生成token
  28. token, err := jwt.GenerateToken(&jwt.Playload{
  29. UserId: admin.UserId,
  30. Phone: admin.Phone,
  31. Expire: time.Now().Unix() + 86400*10,
  32. Role: admin.Role,
  33. }, viper.GetString("token_secret"))
  34. if err != nil {
  35. return nil, ierr.NewIError(ierr.GenerateTokenFailed, err.Error())
  36. }
  37. return &models.LoginReply{
  38. UserId: admin.UserId,
  39. Phone: admin.Phone,
  40. Token: token,
  41. Role: admin.Role,
  42. }, nil
  43. }