���Root Mod By V1rus_Alfa
User / IP
:
216.73.217.78
Host / Server
:
195.214.235.115 / npln.ir
System
:
Linux damavand.pws-dns.net 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Command
|
Upload
|
Mass Deface
|
Create
:
/
home2
/
cutunixc
/
repositories
/
dasterang-api
/
modules
/
Shared
/
Http
/
Controllers
/
Viewing: BaseCrudHandler.php
<?php namespace Modules\Shared\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Auth\Access\Response; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Validation\ValidationException; use Modules\Shared\Services\Responder; use Modules\Tenancy\Models\Tenant; use Intervention\Image\Laravel\Facades\Image; use Illuminate\Support\Facades\Storage; use Illuminate\Routing\UrlGenerator; use Symfony\Component\Finder\Exception\AccessDeniedException; /** * */ abstract class BaseCrudHandler extends Controller { // public Tenant|null $tenant = null; public FormRequest|Request $request; protected bool $shouldPaginate = false; protected int $defaultPerPage = 15; protected int $maxPerPage = 30; protected $url; public function __construct(UrlGenerator $url) { $this->url = $url; } protected function isFormRequest(Request $request): bool { return $request instanceof FormRequest; } public function __invoke() { return $this->startup(); } public function startup() { $this->request = request(); $attributes = $this->request->route()->parameters(); $attributes = array_merge($attributes, $this->request->all()); $this->beforeExecution($attributes); if (!$this->authorize()) { throw new AuthorizationException('You do not have permission to perform this action.'); } if (method_exists(self::class, 'validate') && !empty($this->validate())) { $validatedData = $this->handleValidation(); if (!$validatedData) { throw ValidationException::withMessages([]); } } $result = $this->handle($attributes); $this->afterExecution($result, $attributes); return $result; } public function handle(array $attributes = []) { DB::beginTransaction(); try { $data = $this->execute($attributes); DB::commit(); return $data; } catch (\Exception $exception) { DB::rollBack(); return Responder::error($exception->getMessage(), $exception->getTrace()); } } public function execute(array $attributes = []) {} protected function beforeExecution(array $attributes = []) { // if (isset($attributes['tenant_id'])) // setPermissionsTeamId($attributes['tenant_id']); // else if (auth('api-tenant')->check()) // setPermissionsTeamId(auth('api-tenant')->user()->tenant?->id); // $this->setCurrentTenant(); $this->determinePagination(); } protected function getValidatedData(FormRequest|Request $request): array { if ($this->isFormRequest($request)) { return $request->validated(); } return $request->all(); } protected function afterExecution($result, array $attributes = []): void {} // protected function setCurrentTenant() // { // if (!is_null($this->request->tenant_id)) { // $this->tenant = Tenant::where('id', $this->request->tenant_id)->firstOrFail(); // return; // } // $this->tenant = Tenant::where('id', $this->request->headers->get('X-Current-Tenant-ID'))->firstOrFail(); // if (is_null($this->tenant)) { // return Responder::error('Tenant is null'); // } // return $this->tenant; // } public function validate() { return []; } public function handleValidation() { if (count($this->validate()) > 0) return $this->request->validate($this->validate()); return []; } protected function determinePagination() { $this->shouldPaginate = $this->request->has('page') || $this->request->has('per_page') || $this->isPaginationForced(); } protected function isPaginationForced() { return false; } protected function getPaginationParams() { $perPage = (int)$this->request->get('per_page', $this->defaultPerPage); $page = (int)$this->request->get('page', 1); $perPage = min($perPage, $this->maxPerPage); $perPage = max($perPage, 1); return [ 'per_page' => $perPage, 'page' => $page ]; } protected function shouldPaginate() { if ($this->request->has('no_pagination') && $this->request->get('no_pagination') == 'true') { return false; } return $this->shouldPaginate; } protected function applySorting($query, array $allowedSortFields = []) { $sortBy = $this->request->get('sort_by', 'id'); $sortDirection = $this->request->get('sort_direction', 'desc'); $sortDirection = in_array(strtolower($sortDirection), ['asc', 'desc']) ? strtolower($sortDirection) : 'desc'; if (!empty($allowedSortFields) && !in_array($sortBy, $allowedSortFields)) { $sortBy = 'id'; } return $query->orderBy($sortBy, $sortDirection); } public function authorize() { return false; } }
Coded With 💗 by
0x6ick Mod By V1rus_Alfa