이렇게 하면 사용자가 모든 포스트를 리스팅(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; } } }