From ba4bb7de88241c119eefbac745b448a7fa53b05b Mon Sep 17 00:00:00 2001 From: 240403 <240403@epvc.pt> Date: Sat, 16 May 2026 14:37:27 +0100 Subject: [PATCH] =?UTF-8?q?corre=C3=A7=C3=B5es=20nas=20turmas=20e=20discip?= =?UTF-8?q?linas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/services/auth_service.dart | 14 ++++++++++++++ .../presentation/pages/join_class_page.dart | 11 ++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) 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'