feat(ecosystem): full Grade 10 curriculum sync, real device fingerprinting, teacher video dashboard, and official textbook assets
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:http/http.dart' as http;
|
||||
import '../core/services/storage_service.dart';
|
||||
import '../core/utils/app_logger.dart';
|
||||
import '../data/models/directorate_models.dart';
|
||||
import 'device_fingerprint_service.dart';
|
||||
|
||||
/// Authenticated API client for principals, supervisors, and directorates.
|
||||
/// Operational data always comes from the server; connection errors stay errors.
|
||||
@@ -21,11 +22,14 @@ class DirectorateApiService {
|
||||
if (token == null || token.isEmpty) {
|
||||
throw StateError('جلسة الإدارة غير متوفرة. يرجى تسجيل الدخول.');
|
||||
}
|
||||
final fingerprint = await DeviceFingerprintService.getFingerprint();
|
||||
final metadata = await DeviceFingerprintService.getDeviceMetadata();
|
||||
return {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer $token',
|
||||
'X-Device-Fingerprint': 'saqel_admin_flutter',
|
||||
'X-Device-Fingerprint': fingerprint,
|
||||
'X-Device-Platform': metadata['platform'] ?? 'unknown',
|
||||
};
|
||||
}
|
||||
|
||||
@@ -75,18 +79,22 @@ class DirectorateApiService {
|
||||
required String otp,
|
||||
required String role,
|
||||
}) async {
|
||||
final fingerprint = await DeviceFingerprintService.getFingerprint();
|
||||
final metadata = await DeviceFingerprintService.getDeviceMetadata();
|
||||
final response = await http
|
||||
.post(
|
||||
Uri.parse('$baseUrl/api/auth/otp/verify'),
|
||||
headers: const {
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json',
|
||||
'X-Device-Fingerprint': fingerprint,
|
||||
'X-Device-Platform': metadata['platform'] ?? 'unknown',
|
||||
},
|
||||
body: json.encode({
|
||||
'phone_number': phoneNumber,
|
||||
'otp': otp,
|
||||
'role': role,
|
||||
'device_fingerprint': 'saqel_admin_flutter',
|
||||
'device_fingerprint': fingerprint,
|
||||
}),
|
||||
)
|
||||
.timeout(const Duration(seconds: 30));
|
||||
|
||||
Reference in New Issue
Block a user