더북(TheBook)

이렇게 하면 사용자가 모든 포스트를 리스팅(list)할 수 있고, 단일 포스트를 조회(get)할 수도 있습니다. 여기에 포스트를 자신의 계정 정보로만 작성할 수 있다는 규칙을 추가해봅시다.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /posts/{post} {
      allow get;
      allow list;
      allow create: if request.resource.data.user.id == request.auth.uid;
    }
  }
}

create는 데이터 생성을 의미합니다. 이때 if를 사용해 조건을 추가할 수 있습니다. 이 조건문에서는 현재 로그인 중인 사용자 정보와 사용자가 작성한 데이터를 조회할 수 있습니다. 사용자의 로그인 정보는 request.auth.uid, 사용자가 작성한 데이터는 request.resource.data입니다. 여기서 두 값을 비교할 때는 ==를 사용합니다. 이번에 추가한 조건의 의미는 작성한 포스트 데이터의 사용자 정보와 로그인 중인 사용자 정보가 일치할 때만 데이터 작성을 허용한다는 뜻입니다.

다음으로 포스트 수정과 삭제에 대한 권한을 추가해줍시다.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /posts/{post} {
      allow get;
      allow list;
      allow create: if request.resource.data.user.id == request.auth.uid;
      allow delete, update: if resource.data.user.id == request.auth.uid;
    }
  }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.