Мои данные выглядят примерно так:
/databases/schools/{schoolId}/faculty
/students
/etc
У меня есть группа людей с customClaim "schoolId" в своих аккаунтах.Я только хочу, чтобы они имели доступ к факультету, студентам и т. Д. Той школы, к которой они принадлежат.Пробовал много итераций этого правила, последняя из которых
service cloud.firestore {
match /databases/schools/{document} {
match /{doc=**} {
allow read, write: if user.token.schoolId == document;
}
}
}
Другие итерации включают:
service cloud.firestore {
match /databases/schools/{document} {
allow read, write: if user.token.schoolId == document;
}
}
и
service cloud.firestore {
match /databases/schools {
match /{document=**} {
allow read, write: if user.token.schoolId == document;
}
}
}
или
service cloud.firestore {
match /databases/{database}/documents {
match /{$document} {
allow read, write: if resource.id == user.token.schoolId;
}
}
}
Такое чувство, что это должно быть довольно простым делом, но я не могу понять это (у меня 12-я итерация)
Мне кажется, я понимаю, что последний не работает, потому что еслиЯ пытаюсь получить / database / schools / school1 / faculty / abc123, тогда resource.id фактически ссылается на abc123, а не school1.
Пример пользователя выглядит так, когда я декодирую токен:
uid: "gobblygook"
displayName: null
photoURL: null
email: "test-email@yopmail.com"
emailVerified: true
phoneNumber: null
isAnonymous: false
apiKey: "{apikey}"
appName: "[DEFAULT]"
authDomain: "{mydomain}.firebaseapp.com"
lastLoginAt: "1538972960000"
createdAt: "1538868952000"
schoolId: "school1"