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:
@@ -54,13 +54,19 @@ class AppRouter {
|
||||
GoRoute(
|
||||
path: login,
|
||||
name: 'login',
|
||||
builder: (context, state) => const LoginPage(),
|
||||
builder: (context, state) {
|
||||
final selectedRole = state.uri.queryParameters['role'];
|
||||
return LoginPage(selectedRole: selectedRole);
|
||||
},
|
||||
),
|
||||
|
||||
GoRoute(
|
||||
path: signup,
|
||||
name: 'signup',
|
||||
builder: (context, state) => const SignupPage(),
|
||||
builder: (context, state) {
|
||||
final selectedRole = state.uri.queryParameters['role'];
|
||||
return SignupPage(selectedRole: selectedRole);
|
||||
},
|
||||
),
|
||||
|
||||
// Dashboard Routes
|
||||
|
||||
@@ -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