728x90
유저를 생성한다.
await admin.auth().setCustomUserClaims(user.uid, { admin: true });
를 통해 유저의 claim에 admin: true를 지정해준다.
이후 fireStore 보안 규칙 내에서
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// 관리자 권한 확인 함수
function isAdmin() {
return request.auth != null && request.auth.token.admin == true;
}
match /projects/{projectId} {
allow read: if true; // 모든 사용자가 읽기 가능
allow write: if isAdmin(); // 관리자만 쓰기 가능
}
}
}
와 같이 설정해준다.
request.auth 는 요청의 인증이 들어가있는 부분이고, request.auth.token은 Firebase Auth ID Token(JWT)의 payload 부분이다.
이 payload에서 이전에 설정해줬던 커스텀 claim인 admin을 가져오는 것이다.
728x90
'서버(Server)' 카테고리의 다른 글
Firebase 예시로 살펴보는 JWT (0) | 2025.05.12 |
---|---|
REST API URL 규칙 (0) | 2025.03.13 |
소셜 로그인 DB 설계 (0) | 2023.07.30 |