diff --git a/lib/core/services/auth_service.dart b/lib/core/services/auth_service.dart index 0eb78a5..4ad822a 100644 --- a/lib/core/services/auth_service.dart +++ b/lib/core/services/auth_service.dart @@ -90,6 +90,20 @@ class AuthService { } } + /// Ler schoolClassId do aluno na Firestore (turma escolar definida no registo) + static Future getStudentSchoolClassId(String uid) async { + try { + final doc = await _firestore.collection('users').doc(uid).get(); + if (doc.exists) { + return doc.data()?['schoolClassId'] as String?; + } + return null; + } catch (e) { + print('DEBUG: Erro ao ler schoolClassId: $e'); + return null; + } + } + /// Ler role do usuário na Firestore static Future getUserRole(String uid) async { try { diff --git a/lib/features/classes/presentation/pages/join_class_page.dart b/lib/features/classes/presentation/pages/join_class_page.dart index a664162..2180e5a 100644 --- a/lib/features/classes/presentation/pages/join_class_page.dart +++ b/lib/features/classes/presentation/pages/join_class_page.dart @@ -47,8 +47,8 @@ class _JoinClassPageState extends State { return; } - // Ler classId autorizado do aluno (definido no registo) - final authorizedClassId = await AuthService.getStudentClassId( + // Ler schoolClassId autorizado do aluno (definido no registo) + final studentSchoolClassId = await AuthService.getStudentSchoolClassId( currentUser.uid, ); @@ -67,9 +67,14 @@ class _JoinClassPageState extends State { final classDoc = classQuery.docs.first; final classId = classDoc.id; + final classSchoolClassId = + classDoc.data()['schoolClassId'] as String?; // Verificar se o aluno está autorizado a entrar nesta turma - if (authorizedClassId == null || authorizedClassId != classId) { + // O schoolClassId do aluno deve corresponder ao schoolClassId da disciplina + if (studentSchoolClassId == null || + classSchoolClassId == null || + studentSchoolClassId != classSchoolClassId) { setState(() => _isLoading = false); _showError( 'Não tens permissão para entrar nesta turma.\n'