[]
Snapshot 클래스는 웹 클라이언트 라이브러리를 사용하므로 해당 인증 메커니즘에 의존합니다. 웹 클라이언트 라이브러리는 Firestore 데이터베이스 보안 규칙과 통합됩니다. 규칙을 생성, 검토 및 수정할 수 있는 Firebase 콘솔에서 설정할 수 있습니다. 예:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if exists(/databases/$(database)/documents/admins/$(request.auth.token.email));
}
}
}
이 예시에서는 누구나 데이터를 읽을 수 있지만, 특정 사용자만 변경할 수 있도록 규칙이 설정되어 있습니다. 사용자는 데이터베이스 내의 'admins' 컬렉션을 사용하여 정의됩니다. 'admins' 컬렉션에는 데이터베이스에 쓰기 권한이 있는 사용자의 이메일이 포함되어 있습니다.
OAuth2 클래스를 사용하여 사용자를 인증할 수 있습니다. 이전에 Firestore 클래스를 사용할 때와 마찬가지로 사용할 수 있으며, 다른 점은 웹 클라이언트 라이브러리를 사용할 때 accessToken 속성을 사용하지 않는다는 점입니다. 대신 OAuth2 클래스에서 제공하는 idToken을 기반으로 자격 증명 객체를 생성하고 그 자격 증명을 사용하여 Firebase 클라이언트 라이브러리로 서명해야 합니다.
import { Snapshot, OAuth2 } from '@mescius/wijmo.cloud';
// update state when user changes
auth.userChanged.addHandler(s => {
let user = s.user;
oAuthBtn.textContent = user ? 'Sign Out' : 'Sign In';
// update Firestore access tokens
//fs.accessToken = user ? s.accessToken : null;
// Sign in with credential from the Google user.
// https://firebase.google.com/docs/auth/web/google-signin
if (user) {
let credential = firebase.auth.GoogleAuthProvider.credential(s.idToken);
firebase.auth().signInWithCredential(credential);
} else {
firebase.auth().signOut();
}
});
로그인/로그아웃 경험은 이전과 동일하지만, Firestore 보안 규칙을 사용하고 사용자 정의할 수 있는 추가적인 유연성을 제공합니다.
사용자가 인증되면 Snapshot에서 데이터를 수정할 수 있습니다.('admins' 컬렉션에 이메일이 포함된 경우)