Получение .read и .write Правила безопасности для работы для групп
Мне сложно писать правила безопасности для создания командной платформы для совместной работы.
- Когда пользователь регистрируется, они должны иметь возможность создать команду и пригласить пользователей в эту команду.
- Проекты должны принадлежать команде.
- Только пользователи из этой группы должны иметь возможность просматривать этот проект.
- Пользователи должны видеть только команды, в которых они входят.
Как мне написать правила безопасности .read, чтобы пользователи могли видеть информацию только от команд, в которых они находятся?
Мне нужно получить только две команды, потому что я принадлежу им github: 8272012.
Текущие правила безопасности:
{
"rules": {
".read": true,
"users": {
"$user": {
//can add a message if authenticated
".write": "auth.uid === $user"
}
},
"teams": {
"$team": {
"users": {
// can write to the users list only if ADMINISTRATOR
"$user": {
".write":"newData.parent().child(auth.uid).val() === 99"
}
}
}
},
"projects": {
"$team": {
"$project": {
//can add a message if they are a MEMBER
".write": "(!data.exists() && newData.exists() && root.child('teams/' + $team + '/users/' + auth.uid).val() >= 10)"
}
}
}
}
}
Мне нужно получить только две команды, потому что я принадлежу им github:8272012
.
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответы
Ответ 1
Следующие правила безопасности предоставят доступ для чтения и записи для проекта только тем пользователям, которые находятся в этой команде проекта (при условии, что вы добавили /projects
node для каждого пользователя, чтобы указать, к каким проектам, к которым пользователь имеет доступ):
"rules": {
"projects": {
"$project": {
".read": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()" ,
".write": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()"
}
}
}
Я не могу видеть, какие данные вы сохраняете для каждого проекта, но если вы храните ссылку на команду проекта, вы также можете использовать ее в своих правилах безопасности.