kra/internal/service/system/jwt_blacklist.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(srv *http.Server) {
r := srv.Route("/")
r.POST("/jwt/jsonInBlacklist", s.JoinBlacklist)
}