с Firebase
правилами безопасности, можно только проверить, существуют ли ключи - поэтому поиск в таблице пользователей не вариант:
"emails": {
"example1@gmail.com": true,
"example2@gmail.com": true
}
, а затем можно проверить с правилами безопасности, если auth.token.email
существует в качестве ключа :
{
"rules": {
".read": "root.child('emails').child(auth.token.email).exists(),
".write": false,
}
}
в клиенте, это должно выдать ошибку "The read failed: Permission denied error"
, которая будет обработана соответствующим образом.подключиться к регистрации в Firebase невозможно - но, хотя они не могут войти, это требует тех же усилий (за исключением того, что on время от времени приходится очищать базу данных пользователей);например.с помощью облачной функции, которая удаляет пользователей, чьи электронные адреса не указаны в качестве ключа в «таблице» emails
.
в Firestore
правилах безопасности, можно проверить с помощью:
request.auth.token.email
& request.auth.token.email_verified
, например, с коллекцией под названием emails
и коллекцией с именем content
:
match /databases/{database}/documents {
function userMatchesId(userId) {
return request.auth != null && request.auth.uid == userId
}
function readAllowed(email) {
return if get(/databases/$(database)/documents/emails/$(request.auth.token.email)).data != null
}
match /users/{userId} {
allow get: if userMatchesId(userId)
}
match /content {
allow get: if readAllowed(request.auth.token.email)
}
}