41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package system
|
||
|
||
import (
|
||
"kra/internal/biz/system"
|
||
"kra/internal/server/middleware"
|
||
|
||
"github.com/go-kratos/kratos/v2/errors"
|
||
"github.com/go-kratos/kratos/v2/transport/http"
|
||
)
|
||
|
||
// JwtBlacklistService JWT黑名单服务
|
||
type JwtBlacklistService struct {
|
||
uc *system.JwtBlacklistUsecase
|
||
}
|
||
|
||
// NewJwtBlacklistService 创建JWT黑名单服务
|
||
func NewJwtBlacklistService(uc *system.JwtBlacklistUsecase) *JwtBlacklistService {
|
||
return &JwtBlacklistService{uc: uc}
|
||
}
|
||
|
||
// JoinBlacklist 加入黑名单(登出时调用)
|
||
func (s *JwtBlacklistService) JoinBlacklist(ctx http.Context) error {
|
||
token := middleware.GetToken(ctx)
|
||
if token == "" {
|
||
return errors.BadRequest("TOKEN_EMPTY", "token为空")
|
||
}
|
||
if err := s.uc.JoinBlacklist(ctx, token); err != nil {
|
||
return errors.InternalServer("BLACKLIST_ERROR", err.Error())
|
||
}
|
||
return ctx.Result(200, map[string]any{
|
||
"code": 0,
|
||
"msg": "登出成功",
|
||
})
|
||
}
|
||
|
||
// RegisterRoutes 注册路由
|
||
func (s *JwtBlacklistService) RegisterRoutes(rg *RouterGroup) {
|
||
// JWT黑名单(不需要操作记录)
|
||
rg.Private.POST("/jwt/jsonInBlacklist", s.JoinBlacklist)
|
||
}
|