더북(TheBook)

삭제(delete) 및 수정(update) 가능 조건을 추가해줬습니다. request.resource를 조회한 것이 아니라 바로 resource를 조회했는데, 여기서의 resource는 현재 Firestore에 담긴 데이터를 의미합니다. 이번 조건의 의미는 Firestore에 저장된 포스트 데이터의 사용자 정보와 현재 로그인 중인 사용자 정보가 일치할 때만 삭제 및 수정을 허용한다는 뜻입니다.

이제 포스트에 대한 권한 설정은 끝났습니다. 이어서 users 컬렉션에 대한 규칙도 설정해줘야 합니다. 사용자는 다른 사용자의 정보를 조회할 수 있지만, 회원가입(데이터 생성)은 자신의 로그인 정보로만 할 수 있어야 합니다.

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;
    }
    match /users/{user} {
      allow read;
      allow write: if request.auth.uid == user;
    }
  }
}

이번에는 readwrite에 대한 권한을 설정했습니다. readgetlist를 포함하는 권한입니다. 그리고 writecreate, delete, update를 포함하는 권한입니다.

write의 조건에서 조회한 user는 데이터의 고유 ID 값입니다. 규칙을 정하고 싶으면 문서 경로를 지정할 때 match /users/{user}와 같이 입력했는데, {} 사이에 넣은 이름을 우리가 작성할 조건문에서 조회할 수 있습니다.

이제 규칙을 모두 수정했습니다. 규칙을 입력한 뒤 게시 버튼을 누르면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.