HouseholdAuthorizationService.java

package com.hwhub.backend.application.service;

import com.hwhub.backend.domain.repository.HouseholdMemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class HouseholdAuthorizationService {

  private final HouseholdMemberRepository householdMemberRepository;

  /** 指定した userId が householdId に属していなければ例外を投げる. */
  public void assertUserBelongsToHousehold(Long householdId, Long userId) {
    boolean isMember =
        householdMemberRepository.existsActiveByHouseholdIdAndUserId(householdId, userId);
    if (!isMember) {
      throw new AccessDeniedException(
          "User does not belong to household: userId=" + userId + ", householdId=" + householdId);
    }
  }

  /** アクセス可であるかを返す。 */
  public boolean canAccessHousehold(Long householdId, Long userId) {
    return householdMemberRepository.existsActiveByHouseholdIdAndUserId(householdId, userId);
  }
}