Initial commit: NANAHUI CRM - Flutter Firebase CRM assistant
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
rules_version = '2';
|
||||
|
||||
service cloud.firestore {
|
||||
match /databases/{database}/documents {
|
||||
|
||||
// Helper functions
|
||||
function isAuthenticated() {
|
||||
return request.auth != null;
|
||||
}
|
||||
|
||||
function isOwner(userId) {
|
||||
return request.auth.uid == userId;
|
||||
}
|
||||
|
||||
function isTeamMember(teamId) {
|
||||
let team = get(/databases/$(database)/documents/teams/$(teamId)).data;
|
||||
return team.memberIds.hasAny([request.auth.uid]);
|
||||
}
|
||||
|
||||
// Users - пользователи могут читать и обновлять свой профиль
|
||||
match /users/{userId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isOwner(userId);
|
||||
allow update, delete: if isOwner(userId);
|
||||
}
|
||||
|
||||
// Teams - команды
|
||||
match /teams/{teamId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated() && isTeamMember(teamId);
|
||||
allow delete: if isAuthenticated() && isTeamMember(teamId);
|
||||
|
||||
// Подколлекции команд
|
||||
match /projects/{projectId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update, delete: if isAuthenticated();
|
||||
}
|
||||
}
|
||||
|
||||
// Projects - проекты
|
||||
match /projects/{projectId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update, delete: if isAuthenticated();
|
||||
}
|
||||
|
||||
// Tasks - задачи
|
||||
match /tasks/{taskId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated();
|
||||
allow delete: if isAuthenticated();
|
||||
}
|
||||
|
||||
// Mind Maps - карты проектов
|
||||
match /mindmaps/{projectId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated();
|
||||
allow delete: if isAuthenticated();
|
||||
|
||||
match /nodes/{nodeId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated();
|
||||
allow delete: if isAuthenticated();
|
||||
}
|
||||
}
|
||||
|
||||
// Events - события календаря
|
||||
match /events/{eventId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated();
|
||||
allow delete: if isAuthenticated();
|
||||
}
|
||||
|
||||
// Alarms - будильники
|
||||
match /alarms/{alarmId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow create: if isAuthenticated();
|
||||
allow update: if isAuthenticated();
|
||||
allow delete: if isAuthenticated();
|
||||
}
|
||||
|
||||
// Settings - настройки
|
||||
match /settings/{settingId} {
|
||||
allow read: if isAuthenticated();
|
||||
allow write: if isAuthenticated();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user