correções nas turmas e disciplinas
This commit is contained in:
@@ -90,6 +90,20 @@ class AuthService {
|
||||
}
|
||||
}
|
||||
|
||||
/// Ler schoolClassId do aluno na Firestore (turma escolar definida no registo)
|
||||
static Future<String?> 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<String?> getUserRole(String uid) async {
|
||||
try {
|
||||
|
||||
@@ -47,8 +47,8 @@ class _JoinClassPageState extends State<JoinClassPage> {
|
||||
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<JoinClassPage> {
|
||||
|
||||
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'
|
||||
|
||||
Reference in New Issue
Block a user