İlk temizlik tamamlandı bir önceki projeden

This commit is contained in:
Ümit Tunç
2026-04-28 21:14:25 +03:00
commit f80443aec0
10000 changed files with 959965 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Auth;
class AdvancedAuth
{
/**
* Handle an incoming request.
* Bu middleware route parametrelerinden "table" ve "action" bilgisini okur
* ve isAuth() helper'ını kullanarak yetki kontrolü yapar.
*/
public function handle(Request $request, Closure $next): Response
{
// Kullanıcı giriş yapmış mı?
if (!auth()->check() && !$request->user()) {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
// Route parametrelerini al
// Route tanımı: /{table}/{action}
$table = $request->route('table') ?? $request->input('table');
$action = $request->route('action') ?? $request->input('action');
// table-column-values endpoint'i için action varsayılan olarak 'read' yap.
if (!$action && $request->is('api/table-column-values')) {
$action = 'read';
}
// CRUD action'larını permission type'larına eşle
$permissionType = 'read'; // Varsayılan
switch ($action) {
case 'create':
case 'store':
case 'insert':
$permissionType = 'write'; // veya 'create'
break;
case 'update':
case 'edit':
case 'save':
$permissionType = 'write'; // Genelde write güncelleme ve eklemeyi kapsar
break;
case 'delete':
case 'remove':
case 'destroy':
$permissionType = 'full'; // Silme genelde en yüksek yetki ister
break;
case 'read':
case 'get':
case 'list':
case 'view':
$permissionType = 'read';
break;
}
// Admin her zaman geçer (isAuth içinde kontrol ediliyor ama burada erken çıkış yapabiliriz)
// isAuth($moduleType, $permissionType)
// Not: $table parametresi genellikle slug veya tablo adıdır. isAuth slug bekler.
$moduleSlug = resolveModuleFromTable($table);
if (!isAuth($moduleSlug, $permissionType)) {
return response()->json([
'status' => 'error',
'message' => 'Unauthorized action.',
'required_permission' => "$moduleSlug:$permissionType"
], 403);
}
return $next($request);
}
}