últimas mudanças

This commit is contained in:
2026-06-11 23:59:58 +01:00
parent 3533d3436b
commit 34d7ae8afc
4 changed files with 248 additions and 206 deletions

View File

@@ -93,6 +93,20 @@ class _LoginPageState extends State<LoginPage> {
return;
}
// Se role não existe na Firestore (null), permitir login e criar documento
if (actualRole == null) {
print(
'DEBUG: Role não encontrado na Firestore, criando documento com role selecionado: $selectedRole',
);
try {
await AuthService.createUserRole(uid, selectedRole);
print('DEBUG: Role criado com sucesso');
} catch (e) {
print('DEBUG: Erro ao criar role: $e');
// Continuar mesmo se falhar, pois o usuário já está autenticado
}
}
// Validar se o role selecionado corresponde ao role real
if (actualRole != null && selectedRole != actualRole) {
// Fazer logout imediato antes de mostrar erro
@@ -118,6 +132,9 @@ class _LoginPageState extends State<LoginPage> {
return;
}
// Usar selectedRole se actualRole for null (caso acabamos de criar)
final finalRole = actualRole ?? selectedRole;
// Save session based on remember me preference
await SessionService.saveSession(
rememberMe: _rememberMe,
@@ -137,7 +154,7 @@ class _LoginPageState extends State<LoginPage> {
);
// Redirecionar baseado no role real
if (actualRole == 'teacher') {
if (finalRole == 'teacher') {
context.go('/teacher-dashboard');
} else {
context.go('/student-dashboard');
@@ -523,7 +540,9 @@ class _LoginPageState extends State<LoginPage> {
// Signup link
GestureDetector(
onTap: () {
context.go('/signup');
context.go(
'/signup?role=${widget.selectedRole}',
);
},
child: Text(
'Não tem conta? Criar aqui',

View File

@@ -41,12 +41,14 @@ class _SignupPageState extends State<SignupPage> {
Future<void> _loadAvailableClasses() async {
setState(() => _isLoadingClasses = true);
try {
print('DEBUG: Loading school_classes from Firestore');
final snapshot = await FirebaseFirestore.instance
.collection('school_classes')
.where('active', isEqualTo: true)
.orderBy('year')
.orderBy('section')
.get();
print('DEBUG: Loaded ${snapshot.docs.length} school classes');
setState(() {
_availableClasses = snapshot.docs.map((doc) {
final data = doc.data();
@@ -55,6 +57,7 @@ class _SignupPageState extends State<SignupPage> {
_isLoadingClasses = false;
});
} catch (e) {
print('DEBUG: Error loading school_classes: $e');
setState(() => _isLoadingClasses = false);
}
}