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