서버(Server)

Firebase Authentication으로 Firestore 어드민 권한 관리하기

Wibaek 2025. 5. 10. 01:15
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