login_service.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package service
  2. import (
  3. "github.com/druidcaesa/gotool"
  4. "strings"
  5. "ulink-admin/frame"
  6. "ulink-admin/modules/system/models/model"
  7. "ulink-admin/pkg/jwt/admin"
  8. "ulink-admin/pkg/jwt/common"
  9. )
  10. type LoginService struct {
  11. UserService *UserService `inject:""`
  12. }
  13. // Login 用户登录业务处理
  14. func (s LoginService) Login(name string, password string) string {
  15. user := s.UserService.GetUserByUserName(name)
  16. if user == nil {
  17. frame.Throw(frame.BUSINESS_CODE, "用户不存在")
  18. }
  19. if !gotool.BcryptUtils.CompareHash(user.Password, password) {
  20. frame.Throw(frame.BUSINESS_CODE, "用户或密码错误")
  21. }
  22. //生成token
  23. record := new(model.SysUser)
  24. s.UserService.GetById(user.Id, record)
  25. token, err := admin.NewJWT().CreateUserToken(common.LOGIN_TYPE_PASSWORD, record)
  26. if err != nil {
  27. frame.Throw(frame.BUSINESS_CODE, "用户或密码错误")
  28. }
  29. //数据存储到redis中
  30. return token
  31. }
  32. // LoginUser 获取当前登录用户
  33. func (s LoginService) LoginUser(c *frame.Context) *model.SysUser {
  34. token := c.Request.Header.Get("Authorization")
  35. str := strings.Split(token, " ")
  36. j := admin.NewJWT()
  37. // parseToken 解析token包含的信息
  38. claims, err := j.ParseToken(str[1])
  39. if err != nil {
  40. gotool.Logs.ErrorLog().Println(err)
  41. }
  42. info := claims.UserInfo
  43. return info
  44. }