MIF_E31230892/debug_comprehensive.php

194 lines
7.1 KiB
PHP

<?php
/**
* Comprehensive Debug Script
* Akses: http://localhost/TugasAkhir/debug_comprehensive.php
*/
echo "<html><head><title>Debug Comprehensive</title>";
echo "<style>body{font-family:Arial;padding:20px;} .ok{color:green;} .error{color:red;} .section{border:1px solid #ddd;padding:15px;margin:10px 0;} pre{background:#f4f4f4;padding:10px;}</style>";
echo "</head><body>";
echo "<h1>🔍 Comprehensive Debug - SIM-PKPPS</h1>";
echo "<p>Waktu: " . date('Y-m-d H:i:s') . "</p><hr>";
// Test 1: Laravel Files
echo "<div class='section'>";
echo "<h2>1. File Existence Check</h2>";
$files = [
'Controller' => __DIR__ . '/sim-pkpps/app/Http/Controllers/Admin/UserController.php',
'Routes' => __DIR__ . '/sim-pkpps/routes/web.php',
'View Wali' => __DIR__ . '/sim-pkpps/resources/views/admin/users/wali_accounts.blade.php',
'API Controller' => __DIR__ . '/sim-pkpps/app/Http/Controllers/Api/ApiAuthController.php',
'Flutter Config' => __DIR__ . '/sim_mobile/lib/core/config/app_config.dart',
];
foreach ($files as $name => $path) {
if (file_exists($path)) {
echo "✅ <span class='ok'>{$name}: EXISTS</span> - Modified: " . date('Y-m-d H:i:s', filemtime($path)) . "<br>";
} else {
echo "❌ <span class='error'>{$name}: NOT FOUND</span><br>";
}
}
echo "</div>";
// Test 2: Routes Content
echo "<div class='section'>";
echo "<h2>2. Routes Check</h2>";
$routesFile = __DIR__ . '/sim-pkpps/routes/web.php';
if (file_exists($routesFile)) {
$content = file_get_contents($routesFile);
$checks = [
'wali_destroy route' => "name('wali_destroy')",
'wali_reset_password route' => "name('wali_reset_password')",
'POST delete method' => "post('wali/{userId}/delete'",
'POST reset method' => "post('wali/{userId}/reset-password'"
];
foreach ($checks as $desc => $needle) {
if (strpos($content, $needle) !== false) {
echo "✅ <span class='ok'>{$desc}: FOUND</span><br>";
} else {
echo "❌ <span class='error'>{$desc}: NOT FOUND</span><br>";
}
}
}
echo "</div>";
// Test 3: View File Check
echo "<div class='section'>";
echo "<h2>3. View File Check (wali_accounts.blade.php)</h2>";
$viewFile = __DIR__ . '/sim-pkpps/resources/views/admin/users/wali_accounts.blade.php';
if (file_exists($viewFile)) {
$content = file_get_contents($viewFile);
$checks = [
'Delete button' => "route('admin.users.wali_destroy'",
'Reset button' => "route('admin.users.wali_reset_password'",
'CSRF token' => '@csrf',
'User ID parameter' => '$user->id',
];
foreach ($checks as $desc => $needle) {
if (strpos($content, $needle) !== false) {
echo "✅ <span class='ok'>{$desc}: FOUND</span><br>";
} else {
echo "❌ <span class='error'>{$desc}: NOT FOUND</span><br>";
}
}
echo "<br><strong>Last modified:</strong> " . date('Y-m-d H:i:s', filemtime($viewFile));
}
echo "</div>";
// Test 4: Controller Methods
echo "<div class='section'>";
echo "<h2>4. Controller Methods Check</h2>";
$controllerFile = __DIR__ . '/sim-pkpps/app/Http/Controllers/Admin/UserController.php';
if (file_exists($controllerFile)) {
$content = file_get_contents($controllerFile);
$checks = [
'destroyAccount method' => 'public function destroyAccount(string $role, string $userId)',
'resetPassword method' => 'public function resetPassword(string $role, string $userId)',
'User::findOrFail in destroy' => 'User::findOrFail($userId)',
];
foreach ($checks as $desc => $needle) {
if (strpos($content, $needle) !== false) {
echo "✅ <span class='ok'>{$desc}: FOUND</span><br>";
} else {
echo "❌ <span class='error'>{$desc}: NOT FOUND</span><br>";
}
}
}
echo "</div>";
// Test 5: Flutter Config
echo "<div class='section'>";
echo "<h2>5. Flutter Configuration</h2>";
$flutterConfig = __DIR__ . '/sim_mobile/lib/core/config/app_config.dart';
if (file_exists($flutterConfig)) {
$content = file_get_contents($flutterConfig);
if (strpos($content, 'TugasAkhir/sim-pkpps/public/api/v1') !== false) {
echo "✅ <span class='ok'>Base URL: CORRECT (includes TugasAkhir path)</span><br>";
} else {
echo "❌ <span class='error'>Base URL: INCORRECT (missing TugasAkhir path)</span><br>";
}
echo "<br><strong>Current URL in file:</strong><br>";
preg_match('/baseUrl = \'(.+?)\'/s', $content, $matches);
if (isset($matches[1])) {
echo "<pre>" . htmlspecialchars($matches[1]) . "</pre>";
}
}
echo "</div>";
// Test 6: API Test
echo "<div class='section'>";
echo "<h2>6. API Login Test</h2>";
$apiUrl = 'http://localhost/TugasAkhir/sim-pkpps/public/api/v1/login';
$data = json_encode([
'id_santri' => 'Aydin Fauzan',
'password' => 's002'
]);
$options = [
'http' => [
'header' => "Content-Type: application/json\r\nAccept: application/json\r\n",
'method' => 'POST',
'content' => $data,
'ignore_errors' => true
],
];
$context = stream_context_create($options);
$result = @file_get_contents($apiUrl, false, $context);
if ($result !== false) {
$response = json_decode($result, true);
if (isset($response['success']) && $response['success']) {
echo "✅ <span class='ok'>API Login: SUCCESS</span><br>";
echo "<strong>Token:</strong> " . substr($response['token'], 0, 20) . "...<br>";
echo "<strong>User:</strong> " . $response['user']['name'] . "<br>";
echo "<strong>Role:</strong> " . $response['user']['role'] . "<br>";
} else {
echo "❌ <span class='error'>API Login: FAILED</span><br>";
echo "<pre>" . htmlspecialchars(print_r($response, true)) . "</pre>";
}
} else {
echo "❌ <span class='error'>API: CANNOT CONNECT</span><br>";
}
echo "</div>";
// Test 7: Database Check
echo "<div class='section'>";
echo "<h2>7. Database Wali Accounts</h2>";
$dbFile = __DIR__ . '/sim-pkpps/.env';
if (file_exists($dbFile)) {
echo "✅ <span class='ok'>.env file exists</span><br>";
echo "<p>⚠️ Untuk cek database, gunakan phpMyAdmin atau Tinker</p>";
echo "<pre>php artisan tinker --execute=\"echo App\\Models\\User::where('role','wali')->count();\"</pre>";
} else {
echo "❌ <span class='error'>.env file not found</span><br>";
}
echo "</div>";
// Summary
echo "<hr><div class='section'>";
echo "<h2>📋 Summary & Next Steps</h2>";
echo "<ol>";
echo "<li><strong>Clear Browser Cache:</strong> Ctrl+Shift+R atau Ctrl+F5</li>";
echo "<li><strong>Login ke Admin:</strong> <a href='http://localhost/TugasAkhir/sim-pkpps/public/admin/login' target='_blank'>Login Admin</a></li>";
echo "<li><strong>Test Wali Accounts:</strong> <a href='http://localhost/TugasAkhir/sim-pkpps/public/admin/users/wali' target='_blank'>Wali Accounts</a></li>";
echo "<li><strong>Flutter:</strong> Hot Restart (bukan Hot Reload)</li>";
echo "<li><strong>Test Login Mobile:</strong> Username=<code>Aydin Fauzan</code>, Password=<code>s002</code></li>";
echo "</ol>";
echo "</div>";
echo "<hr><p><em>Generated at " . date('Y-m-d H:i:s') . "</em></p>";
echo "</body></html>";
?>