feat: Add Nanaxe server with Docker, GitHub Actions CI/CD, and auto-deployment
- 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
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user