mirror of
https://github.com/xinliangnote/go-gin-api.git
synced 2024-04-21 12:31:46 +00:00
- 将 middleware 命名为 interceptor - 将 deploy 命名为 deployments - 移除 pkg/errno - 使用 proposal 目录 - 优化代码
49 lines
1.3 KiB
Go
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() {}
|