refactor: verify 응답에서 userId 제거
All checks were successful
Server CI/CD / deploy (push) Successful in 37s
All checks were successful
Server CI/CD / deploy (push) Successful in 37s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -89,13 +89,12 @@ func (h *Handler) VerifyToken(c *fiber.Ctx) error {
|
|||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "token 필드가 필요합니다"})
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "token 필드가 필요합니다"})
|
||||||
}
|
}
|
||||||
|
|
||||||
userID, username, err := h.svc.VerifyToken(req.Token)
|
username, err := h.svc.VerifyToken(req.Token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.JSON(fiber.Map{
|
return c.JSON(fiber.Map{
|
||||||
"userId": userID,
|
|
||||||
"username": username,
|
"username": username,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ func (s *Service) Register(username, password string) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifyToken validates a JWT and its Redis session, returning (userID, username, error).
|
// VerifyToken validates a JWT and its Redis session, returning (username, error).
|
||||||
func (s *Service) VerifyToken(tokenStr string) (uint, string, error) {
|
func (s *Service) VerifyToken(tokenStr string) (string, error) {
|
||||||
token, err := jwt.ParseWithClaims(tokenStr, &Claims{}, func(t *jwt.Token) (any, error) {
|
token, err := jwt.ParseWithClaims(tokenStr, &Claims{}, func(t *jwt.Token) (any, error) {
|
||||||
if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {
|
if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {
|
||||||
return nil, fmt.Errorf("unexpected signing method")
|
return nil, fmt.Errorf("unexpected signing method")
|
||||||
@@ -101,21 +101,21 @@ func (s *Service) VerifyToken(tokenStr string) (uint, string, error) {
|
|||||||
return []byte(config.C.JWTSecret), nil
|
return []byte(config.C.JWTSecret), nil
|
||||||
})
|
})
|
||||||
if err != nil || !token.Valid {
|
if err != nil || !token.Valid {
|
||||||
return 0, "", fmt.Errorf("유효하지 않은 토큰입니다")
|
return "", fmt.Errorf("유효하지 않은 토큰입니다")
|
||||||
}
|
}
|
||||||
|
|
||||||
claims, ok := token.Claims.(*Claims)
|
claims, ok := token.Claims.(*Claims)
|
||||||
if !ok {
|
if !ok {
|
||||||
return 0, "", fmt.Errorf("토큰 파싱 실패")
|
return "", fmt.Errorf("토큰 파싱 실패")
|
||||||
}
|
}
|
||||||
|
|
||||||
key := fmt.Sprintf("session:%d", claims.UserID)
|
key := fmt.Sprintf("session:%d", claims.UserID)
|
||||||
stored, err := s.rdb.Get(context.Background(), key).Result()
|
stored, err := s.rdb.Get(context.Background(), key).Result()
|
||||||
if err != nil || stored != tokenStr {
|
if err != nil || stored != tokenStr {
|
||||||
return 0, "", fmt.Errorf("만료되었거나 로그아웃된 세션입니다")
|
return "", fmt.Errorf("만료되었거나 로그아웃된 세션입니다")
|
||||||
}
|
}
|
||||||
|
|
||||||
return claims.UserID, claims.Username, nil
|
return claims.Username, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) EnsureAdmin(username, password string) error {
|
func (s *Service) EnsureAdmin(username, password string) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user