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
|
/// Ler role do usuário na Firestore
|
||||||
static Future<String?> getUserRole(String uid) async {
|
static Future<String?> getUserRole(String uid) async {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ class _JoinClassPageState extends State<JoinClassPage> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ler classId autorizado do aluno (definido no registo)
|
// Ler schoolClassId autorizado do aluno (definido no registo)
|
||||||
final authorizedClassId = await AuthService.getStudentClassId(
|
final studentSchoolClassId = await AuthService.getStudentSchoolClassId(
|
||||||
currentUser.uid,
|
currentUser.uid,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -67,9 +67,14 @@ class _JoinClassPageState extends State<JoinClassPage> {
|
|||||||
|
|
||||||
final classDoc = classQuery.docs.first;
|
final classDoc = classQuery.docs.first;
|
||||||
final classId = classDoc.id;
|
final classId = classDoc.id;
|
||||||
|
final classSchoolClassId =
|
||||||
|
classDoc.data()['schoolClassId'] as String?;
|
||||||
|
|
||||||
// Verificar se o aluno está autorizado a entrar nesta turma
|
// 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);
|
setState(() => _isLoading = false);
|
||||||
_showError(
|
_showError(
|
||||||
'Não tens permissão para entrar nesta turma.\n'
|
'Não tens permissão para entrar nesta turma.\n'
|
||||||
|
|||||||
Reference in New Issue
Block a user