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); } }