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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user