Initial commit: NANAHUI CRM - Flutter Firebase CRM assistant

This commit is contained in:
2026-03-27 14:38:10 +05:00
commit 78d15daa35
161 changed files with 9924 additions and 0 deletions
+94
View File
@@ -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();
}
}
}