Update: 2026-08-07 05:03:39
This commit is contained in:
@@ -15,13 +15,9 @@ require_once __DIR__ . '/../ride/pricing/pricing_helper.php';
|
||||
// فحص الدور صراحةً — مجلد serviceapp ليس تحت بوّابة Admin/ المسارية في
|
||||
// connect.php، وكل ملف هنا مسؤول عن حماية نفسه. (update_complaint.php
|
||||
// الأصلي كان بلا فحص، فكان أي حامل JWT يغلق شكوى ويكتب قرارها.)
|
||||
if ($role !== 'admin' && $role !== 'super_admin') {
|
||||
http_response_code(403);
|
||||
exit(json_encode([
|
||||
'status' => 'failure',
|
||||
'message' => 'Forbidden. Support access required.',
|
||||
], JSON_UNESCAPED_UNICODE));
|
||||
}
|
||||
// البوّابة المسارية في connect.php تفرض بالفعل service/admin/super_admin
|
||||
// على كل ما تحت serviceapp/. لا نكرّرها هنا: نسختان من نفس الفحص تتباعدان
|
||||
// بصمت، وقد كتبتُ هذه أولاً بـ admin وحده فمنعت كل موظفي الخدمة.
|
||||
|
||||
// ── قوائم مغلقة ─────────────────────────────────────────────
|
||||
// نص حر في التصنيف يجعل التقارير عديمة المعنى بعد شهر.
|
||||
@@ -41,10 +37,6 @@ const COMPLAINT_REASONS = [
|
||||
const COMPENSATION_KINDS = ['refund', 'goodwill'];
|
||||
const COMPENSATION_BENEFICIARIES = ['passenger', 'driver'];
|
||||
|
||||
// سقف صلب على التعويض الواحد. صلاحية صرف المال بيد موظف دعم تحتاج حداً
|
||||
// أعلى لا يتجاوزه خطأ مطبعي (صفر زائد) ولا حساب مخترَق.
|
||||
const COMPENSATION_ABSOLUTE_CAP = 50000.0;
|
||||
|
||||
$complaintId = filterRequest("complaint_id", 'int');
|
||||
$newStatus = filterRequest("status");
|
||||
$reasonCode = filterRequest("reason_code");
|
||||
@@ -125,10 +117,6 @@ try {
|
||||
if (!in_array($compBeneficiary, COMPENSATION_BENEFICIARIES, true)) {
|
||||
jsonError("Invalid compensation_beneficiary");
|
||||
}
|
||||
if ($compAmount > COMPENSATION_ABSOLUTE_CAP) {
|
||||
jsonError("Compensation exceeds the allowed limit");
|
||||
}
|
||||
|
||||
$beneficiaryId = $compBeneficiary === 'passenger'
|
||||
? ($complaint['passenger_id'] ?? '')
|
||||
: ($complaint['driver_id'] ?? '');
|
||||
@@ -144,6 +132,13 @@ try {
|
||||
? (string) $kazan['currency']
|
||||
: getCurrencyByCountry((string) ($kazan['country'] ?? 'Syria'));
|
||||
|
||||
// السقف الصلب بعملة الدولة — يُفحص بعد معرفة العملة لا قبلها.
|
||||
// صلاحية صرف المال بيد موظف دعم تحتاج حداً لا يتجاوزه خطأ مطبعي.
|
||||
$hardCap = getMoneyHardCap($currency);
|
||||
if ($compAmount > $hardCap) {
|
||||
jsonError("Compensation exceeds the allowed limit ($hardCap $currency)");
|
||||
}
|
||||
|
||||
if ($compKind === 'refund' && $rideId) {
|
||||
$stmtRide = $con->prepare("SELECT price FROM ride WHERE id = ? LIMIT 1");
|
||||
$stmtRide->execute([$rideId]);
|
||||
|
||||
Reference in New Issue
Block a user