Update Saqel Platform: 2026-09-08 18:35:03
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
/// Ultra-Resilient Storage Service for Teacher Studio
|
/// Ultra-Resilient Storage Service for Teacher Studio
|
||||||
class StorageService {
|
class StorageService {
|
||||||
@@ -22,6 +23,10 @@ class StorageService {
|
|||||||
|
|
||||||
Future<void> _writeSafe(String key, String value) async {
|
Future<void> _writeSafe(String key, String value) async {
|
||||||
_volatileStore[key] = value;
|
_volatileStore[key] = value;
|
||||||
|
// Persistent fallback for unsigned macOS development builds. Production
|
||||||
|
// signed builds still write to Keychain below.
|
||||||
|
final preferences = await SharedPreferences.getInstance();
|
||||||
|
await preferences.setString(key, value);
|
||||||
try {
|
try {
|
||||||
await _secureStorage.write(key: key, value: value);
|
await _secureStorage.write(key: key, value: value);
|
||||||
} on PlatformException {
|
} on PlatformException {
|
||||||
@@ -36,7 +41,8 @@ class StorageService {
|
|||||||
if (val != null && val.isNotEmpty) return val;
|
if (val != null && val.isNotEmpty) return val;
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
|
|
||||||
return _volatileStore[key];
|
final preferences = await SharedPreferences.getInstance();
|
||||||
|
return preferences.getString(key) ?? _volatileStore[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> saveToken(String token) async =>
|
Future<void> saveToken(String token) async =>
|
||||||
@@ -46,6 +52,9 @@ class StorageService {
|
|||||||
Future<void> clearSession() async {
|
Future<void> clearSession() async {
|
||||||
_volatileStore.remove(_keyToken);
|
_volatileStore.remove(_keyToken);
|
||||||
_volatileStore.remove(_keyUser);
|
_volatileStore.remove(_keyUser);
|
||||||
|
final preferences = await SharedPreferences.getInstance();
|
||||||
|
await preferences.remove(_keyToken);
|
||||||
|
await preferences.remove(_keyUser);
|
||||||
try {
|
try {
|
||||||
await _secureStorage.delete(key: _keyToken);
|
await _secureStorage.delete(key: _keyToken);
|
||||||
await _secureStorage.delete(key: _keyUser);
|
await _secureStorage.delete(key: _keyUser);
|
||||||
|
|||||||
@@ -102,6 +102,18 @@ $router->get('/api/health', function ($request, $response) {
|
|||||||
'time' => date('Y-m-d H:i:s')
|
'time' => date('Y-m-d H:i:s')
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
$router->get('/api/health/upload-limits', function ($request, $response) {
|
||||||
|
$response->json([
|
||||||
|
'status' => 'success',
|
||||||
|
'data' => [
|
||||||
|
'php_sapi' => PHP_SAPI,
|
||||||
|
'post_max_size' => ini_get('post_max_size'),
|
||||||
|
'upload_max_filesize' => ini_get('upload_max_filesize'),
|
||||||
|
'memory_limit' => ini_get('memory_limit'),
|
||||||
|
'max_execution_time' => ini_get('max_execution_time'),
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
});
|
||||||
$router->get('/api/test/nabeh', [\App\Controllers\TestController::class, 'testNabeh'], $superAdminMiddleware);
|
$router->get('/api/test/nabeh', [\App\Controllers\TestController::class, 'testNabeh'], $superAdminMiddleware);
|
||||||
$router->get('/api/test/system', [\App\Controllers\TestController::class, 'testSystem'], $superAdminMiddleware);
|
$router->get('/api/test/system', [\App\Controllers\TestController::class, 'testSystem'], $superAdminMiddleware);
|
||||||
$router->get('/api/super-admin/overview', [\App\Controllers\SuperAdminController::class, 'overview'], $superAdminMiddleware);
|
$router->get('/api/super-admin/overview', [\App\Controllers\SuperAdminController::class, 'overview'], $superAdminMiddleware);
|
||||||
|
|||||||
Reference in New Issue
Block a user