Skip to content

fix: 주최자·본인이 아닌데 토너먼트 상품 수정 페이지에 진입 가능 #489

Description

@iOdiO89

버그 내용

토너먼트 담기 화면에서 주최자도 아니고 본인이 담은 상품도 아닌데 상품 수정 페이지에 들어갈 수 있다.

  • 바스켓의 상품을 누르면 누구나 수정 페이지로 진입한다
  • 진입 자체를 막고(클릭 비활성), 페이지에도 가드를 둔다

예상 결과

  • 본인이 담은 상품이거나 주최자일 때만 상품이 클릭된다
  • 직접 URL 로 진입해도 권한이 없으면 막힌다

참고

클릭 차단이 없다. READY 상태면 소유자와 무관하게 Link 로 감싼다.

app/tournament/[id]/create/_components/tournament-item-basket/TournamentItemBasket.tsx:79-92

if (item.status === 'READY') {
  return (
    <Link href={ROUTES.TOURNAMENT_ITEM_EDIT(tournamentId, item.tournamentItemId)}>
      <TournamentBasketItem ... />
    </Link>
  );
}
  • 아이템에 userId 가 내려온다 (_common/_types/tournamentResponse.tsTournamentPendingItemT)
  • 주최자 여부는 tournamentData.isOwner, 본인 식별은 useGetMe 로 판단할 수 있다
  • 참가자 프로필 매핑에 이미 participantImageMap 으로 userId 를 쓰고 있다

페이지 가드는 서버 응답에 의존하고 있다. app/tournament/[id]/item/[itemId]/layout.tsx403 → redirect(HOME) 분기가 있지만, 서버가 조회는 열어두고 있어 실제로 걸리지 않는 것으로 보인다.

확인 필요

  • 서버가 GET 은 허용하고 PATCH/DELETE 만 막는 구조인지 확인 필요. 그렇다면 클라에서 소유자·주최자 판단으로 가드해야 한다

Metadata

Metadata

Assignees

Labels

WEBfixSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions