f1e0f6b5ef
- Add complete server infrastructure with Gitea, API, PostgreSQL - Implement Obsidian-compatible markdown mindmap converter - Add Flutter service for server synchronization - Configure GitHub Actions for automated build and deploy - Add production docker-compose with health checks - Include VPS setup and deployment scripts - Add comprehensive deployment documentation
51 lines
1.7 KiB
Dart
51 lines
1.7 KiB
Dart
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
|
|
/// Сервис для проверки прав доступа администраторов
|
|
class AdminAccessService {
|
|
// Список email'ов администраторов
|
|
static const List<String> adminEmails = [
|
|
'ormix16@gmail.com',
|
|
'almalexyz@gmail.com',
|
|
];
|
|
|
|
/// Проверка является ли пользователь администратором
|
|
static Future<bool> isAdmin(String userEmail) async {
|
|
return adminEmails.contains(userEmail.toLowerCase());
|
|
}
|
|
|
|
/// Получить список всех администраторов
|
|
static List<String> getAdminEmails() {
|
|
return List.from(adminEmails);
|
|
}
|
|
|
|
/// Добавить администратора (только для Firestore)
|
|
static Future<void> addAdmin(String email) async {
|
|
if (!adminEmails.contains(email.toLowerCase())) {
|
|
await FirebaseFirestore.instance
|
|
.collection('admin_access')
|
|
.doc(email.toLowerCase())
|
|
.set({
|
|
'email': email.toLowerCase(),
|
|
'addedAt': Timestamp.now(),
|
|
'role': 'admin',
|
|
});
|
|
}
|
|
}
|
|
|
|
/// Удалить администратора
|
|
static Future<void> removeAdmin(String email) async {
|
|
await FirebaseFirestore.instance
|
|
.collection('admin_access')
|
|
.doc(email.toLowerCase())
|
|
.delete();
|
|
}
|
|
|
|
/// Получить список администраторов из Firestore
|
|
static Future<List<String>> getAdminsFromFirestore() async {
|
|
final snapshot =
|
|
await FirebaseFirestore.instance.collection('admin_access').get();
|
|
|
|
return snapshot.docs.map((doc) => doc.id).toList();
|
|
}
|
|
}
|