token.go 1.3 KB

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