Files
go-gin-api/internal/router/interceptor/interceptor.go
T
新亮 4c37a7e6b5 feature(1.2.8): swagger 接口文档新增 Security
- 将 middleware 命名为 interceptor
- 将 deploy 命名为 deployments
- 移除 pkg/errno
- 使用 proposal 目录
- 优化代码
2021-11-28 13:25:27 +08:00

49 lines
1.3 KiB
Go

package interceptor
import (
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/proposal"
"github.com/xinliangnote/go-gin-api/internal/repository/mysql"
"github.com/xinliangnote/go-gin-api/internal/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/services/admin"
"github.com/xinliangnote/go-gin-api/internal/services/authorized"
"go.uber.org/zap"
)
var _ Interceptor = (*interceptor)(nil)
type Interceptor interface {
// CheckLogin 验证是否登录
CheckLogin(ctx core.Context) (info proposal.SessionUserInfo, err core.BusinessError)
// CheckRBAC 验证 RBAC 权限是否合法
CheckRBAC() core.HandlerFunc
// CheckSignature 验证签名是否合法,对用签名算法 pkg/signature
CheckSignature() core.HandlerFunc
// i 为了避免被其他包实现
i()
}
type interceptor struct {
logger *zap.Logger
cache redis.Repo
db mysql.Repo
authorizedService authorized.Service
adminService admin.Service
}
func New(logger *zap.Logger, cache redis.Repo, db mysql.Repo) Interceptor {
return &interceptor{
logger: logger,
cache: cache,
db: db,
authorizedService: authorized.New(db, cache),
adminService: admin.New(db, cache),
}
}
func (i *interceptor) i() {}