interceptor.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package interceptor
  2. import (
  3. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  4. "github.com/xinliangnote/go-gin-api/internal/proposal"
  5. "github.com/xinliangnote/go-gin-api/internal/repository/mysql"
  6. "github.com/xinliangnote/go-gin-api/internal/repository/redis"
  7. "github.com/xinliangnote/go-gin-api/internal/services/admin"
  8. "github.com/xinliangnote/go-gin-api/internal/services/authorized"
  9. "go.uber.org/zap"
  10. )
  11. var _ Interceptor = (*interceptor)(nil)
  12. type Interceptor interface {
  13. // CheckLogin 验证是否登录
  14. CheckLogin(ctx core.Context) (info proposal.SessionUserInfo, err core.BusinessError)
  15. // CheckRBAC 验证 RBAC 权限是否合法
  16. CheckRBAC() core.HandlerFunc
  17. // CheckSignature 验证签名是否合法,对用签名算法 pkg/signature
  18. CheckSignature() core.HandlerFunc
  19. // i 为了避免被其他包实现
  20. i()
  21. }
  22. type interceptor struct {
  23. logger *zap.Logger
  24. cache redis.Repo
  25. db mysql.Repo
  26. authorizedService authorized.Service
  27. adminService admin.Service
  28. }
  29. func New(logger *zap.Logger, cache redis.Repo, db mysql.Repo) Interceptor {
  30. return &interceptor{
  31. logger: logger,
  32. cache: cache,
  33. db: db,
  34. authorizedService: authorized.New(db, cache),
  35. adminService: admin.New(db, cache),
  36. }
  37. }
  38. func (i *interceptor) i() {}