validação entre professor e aluno, criação de placeholder para a tela de professores e mudanças na firebase

This commit is contained in:
2026-05-08 16:37:36 +01:00
parent c821ce8e1e
commit 1b7b03034d
6 changed files with 461 additions and 73 deletions

View File

@@ -1,15 +1,50 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'session_service.dart';
/// Service for handling Firebase Authentication
class AuthService {
static final FirebaseAuth _auth = FirebaseAuth.instance;
static final FirebaseFirestore _firestore = FirebaseFirestore.instance;
/// Get current user
static User? get currentUser {
return _auth.currentUser;
}
/// Criar documento do usuário na Firestore após signup
static Future<void> createUserRole(String uid, String role) async {
try {
print('DEBUG: Criando documento users/$uid com role: $role');
await _firestore.collection('users').doc(uid).set({
'role': role,
'createdAt': FieldValue.serverTimestamp(),
});
print('DEBUG: Documento criado com sucesso');
} catch (e) {
print('DEBUG: Erro ao criar documento: $e');
throw Exception('Erro ao criar perfil do usuário');
}
}
/// Ler role do usuário na Firestore
static Future<String?> getUserRole(String uid) async {
try {
print('DEBUG: Lendo documento users/$uid');
final doc = await _firestore.collection('users').doc(uid).get();
if (doc.exists) {
final role = doc.data()?['role'] as String?;
print('DEBUG: Role encontrado: $role');
return role;
}
print('DEBUG: Documento não existe');
return null;
} catch (e) {
print('DEBUG: Erro ao ler documento: $e');
return null;
}
}
/// Get auth state changes stream
static Stream<User?> get authStateChanges {
return _auth.authStateChanges();
@@ -41,10 +76,9 @@ class AuthService {
print('DEBUG: Display name atualizado para: $displayName');
}
// Store user role in custom claims or Firestore (simplified for now)
if (role != null) {
print('DEBUG: Papel do usuário: $role');
// TODO: Store role in Firestore for future use
// Criar documento na Firestore com role
if (role != null && result.user != null) {
await createUserRole(result.user!.uid, role);
}
// Verificar se o email foi verificado