package handler

import (
	"kra/internal/server/middleware"
	"kra/internal/service"

	"github.com/gin-gonic/gin"
)

type Session struct{ tokens *service.TokenService }

func NewSession(tokens *service.TokenService) *Session { return &Session{tokens: tokens} }
func (h *Session) Logout(c *gin.Context) {
	token := middleware.RequestToken(c, false)
	if token == "" {
		NoAuth(c, "未登录或非法访问")
		return
	}
	if err := h.tokens.BlacklistToken(c.Request.Context(), token); err != nil {
		Fail(c, "jwt作废失败")
		return
	}
	SetTokenCookie(c, "", -1)
	Write(c, CodeSuccess, gin.H{}, "jwt作废成功")
}
