csloginlogic.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package logic
  2. import (
  3. "context"
  4. "github.com/golang-jwt/jwt/v4"
  5. "github.com/pkg/errors"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "time"
  8. "ylink/bff/authbff/api/internal/svc"
  9. "ylink/bff/authbff/api/internal/types"
  10. "ylink/comm/jwtkey"
  11. "ylink/comm/result"
  12. )
  13. type CsLoginLogic struct {
  14. logx.Logger
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. }
  18. func NewCsLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CsLoginLogic {
  19. return &CsLoginLogic{
  20. Logger: logx.WithContext(ctx),
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. }
  24. }
  25. func (l *CsLoginLogic) CsLogin(req *types.CsAuthReq) (resp *types.AuthResp, err error) {
  26. now := time.Now().Unix()
  27. token, err := l.generateCsToken(now, req.CsId)
  28. if err != nil {
  29. return nil, errors.Wrap(result.NewErrCode(result.TokenGenerateError), "")
  30. }
  31. return &types.AuthResp{
  32. AccessToken: token,
  33. }, nil
  34. }
  35. //
  36. // generateCsToken
  37. // @Description: 客服token签发
  38. // @receiver l
  39. // @param iat
  40. // @param csId
  41. // @return string
  42. // @return error
  43. //
  44. func (l *CsLoginLogic) generateCsToken(iat int64, csId string) (string, error) {
  45. secret := l.svcCtx.Config.JwtAuth.AccessSecret
  46. expire := l.svcCtx.Config.JwtAuth.AccessExpire
  47. claims := make(jwt.MapClaims)
  48. claims["iat"] = iat
  49. claims["exp"] = iat + expire
  50. claims[jwtkey.CsId] = csId
  51. token := jwt.New(jwt.SigningMethodHS256)
  52. token.Claims = claims
  53. return token.SignedString([]byte(secret))
  54. }