token.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package controllers
  2. import (
  3. "sparrow/pkg/models"
  4. "time"
  5. "github.com/kataras/iris"
  6. jwt "github.com/dgrijalva/jwt-go"
  7. )
  8. // Token helper
  9. type Token struct {
  10. }
  11. // UserClaims user claim
  12. type UserClaims struct {
  13. UserID uint
  14. UserName string
  15. UserType string
  16. RoleCode int
  17. VendorID uint
  18. jwt.StandardClaims
  19. }
  20. // tokenMaker 生成token
  21. func (t *Token) tokenMaker(user *models.User) string {
  22. claims := UserClaims{
  23. UserName: user.UserName,
  24. UserID: user.ID,
  25. RoleCode: user.UserRoleID,
  26. VendorID: user.VendorID,
  27. }
  28. claims.ExpiresAt = time.Now().Add(time.Hour * 24).Unix()
  29. claims.Issuer = "lutai"
  30. token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  31. ser, _ := token.SignedString([]byte(model.SignedString))
  32. return ser
  33. }
  34. func (t *Token) getUserClaims(ctx iris.Context) jwt.MapClaims {
  35. tk := ctx.Values().Get("jwt").(*jwt.Token)
  36. return tk.Claims.(jwt.MapClaims)
  37. }
  38. // 获取当前用户recordid
  39. func (t *Token) getRecorID(ctx iris.Context) uint {
  40. claims := t.getUserClaims(ctx)
  41. return uint(claims["UserID"].(float64))
  42. }
  43. // 获取当前用户vendorid
  44. func (t *Token) getVendorID(ctx iris.Context) uint {
  45. claims := t.getUserClaims(ctx)
  46. return uint(claims["VendorID"].(float64))
  47. }