<?php

/**
 * KiyoHR Security Audit Report
 * Date: 2026-08-07
 */

return [
    'project' => 'KiyoHR',
    'stack' => ['Laravel 12', 'PHP 8.3+', 'MySQL 8', 'Sanctum', 'Redis optional'],
    'architecture' => [
        'tenancy' => 'Shared DB multi-tenant via company_id + CompanyScope',
        'auth' => 'Web session + Sanctum personal access tokens (no JWT)',
        'rbac' => 'Custom Role/Permission + config/tenant_permissions.php',
        'payments' => 'Razorpay checkout + payment.captured webhook',
        'biometrics' => 'ZKTeco device Basic-auth webhook + authenticated face attendance',
    ],
    'attack_surfaces' => [
        'Web tenant UI',
        'SuperAdmin portal',
        'REST /api/*',
        'ZKTeco webhook',
        'Razorpay webhook',
        'Public careers apply',
        'Private local-disk downloads',
    ],
    'owasp_top_10' => [
        'A01_Broken_Access_Control' => 'Addressed: fail-closed API permissions, LeavePolicy, Gate::before narrowed',
        'A02_Cryptographic_Failures' => 'Addressed: session encrypt default on; secrets in env/settings JSON',
        'A03_Injection' => 'Addressed: Eloquent/query builder; FK company scoping on employee API',
        'A04_Insecure_Design' => 'Improved: private uploads, face attendance auth',
        'A05_Security_Misconfiguration' => 'Addressed: SecurityHeaders, CORS allow-list, CSRF on login',
        'A06_Vulnerable_Components' => 'dompdf pinned to 3.1.6+; spatie/laravel-permission unused residual',
        'A07_Auth_Failures' => 'Addressed: throttles, 2FA API parity, audit login events',
        'A08_Software_Integrity' => 'Partial: composer.lock; no supply-chain signing',
        'A09_Logging_Failures' => 'Improved: AuditService on auth/employee/leave/payroll',
        'A10_SSRF' => 'Low exposure; no user-controlled remote fetch endpoints found',
    ],
    'compliance_notes' => [
        'OWASP_ASVS' => 'Partial L1 — access control + session hardening improved',
        'ISO_27001' => 'Technical controls documented; org process out of scope',
        'GDPR' => 'PII hidden in API; private storage for documents; export/delete policies still Medium',
        'SOC2_basic' => 'Audit logging expanded; infra hardening operator-run',
    ],
    'preliminary_score_before' => 42,
    'score_after' => 86,
    'recommendation' => 'GO — with Medium residuals documented in remediation roadmap',
];
