fix: 3차 리뷰 LOW — 에러 메시지 일관성, Redis 타임아웃, 입력 검증
- 5개 핸들러 err.Error() → 제네릭 메시지 (Login, Refresh, SSAFY, Ticket, BossRaid) - Redis context.Background() → WithTimeout 5s (10곳) - SprintMultiplier 범위 검증 추가 - 방어적 문서화 (SSAFY 충돌, zip bomb, body limit prefix, 로그 주입) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"log"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -70,7 +71,8 @@ func (h *Handler) Login(c *fiber.Ctx) error {
|
||||
|
||||
accessToken, refreshToken, user, err := h.svc.Login(req.Username, req.Password)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
||||
log.Printf("Login failed (username=%s): %v", req.Username, err)
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "아이디 또는 비밀번호가 올바르지 않습니다"})
|
||||
}
|
||||
|
||||
c.Cookie(&fiber.Cookie{
|
||||
@@ -106,7 +108,8 @@ func (h *Handler) Refresh(c *fiber.Ctx) error {
|
||||
|
||||
newAccessToken, newRefreshToken, err := h.svc.Refresh(refreshTokenStr)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
||||
log.Printf("Refresh failed: %v", err)
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "토큰 갱신에 실패했습니다"})
|
||||
}
|
||||
|
||||
c.Cookie(&fiber.Cookie{
|
||||
@@ -219,7 +222,8 @@ func (h *Handler) SSAFYCallback(c *fiber.Ctx) error {
|
||||
|
||||
accessToken, refreshToken, user, err := h.svc.SSAFYLogin(req.Code, req.State)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
||||
log.Printf("SSAFY login failed: %v", err)
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "SSAFY 로그인에 실패했습니다"})
|
||||
}
|
||||
|
||||
c.Cookie(&fiber.Cookie{
|
||||
@@ -263,7 +267,8 @@ func (h *Handler) RedeemLaunchTicket(c *fiber.Ctx) error {
|
||||
}
|
||||
token, err := h.svc.RedeemLaunchTicket(req.Ticket)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": err.Error()})
|
||||
log.Printf("RedeemLaunchTicket failed: %v", err)
|
||||
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "유효하지 않거나 만료된 티켓입니다"})
|
||||
}
|
||||
return c.JSON(fiber.Map{"token": token})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user