big update base struktur tahap 1
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Tenant;
|
||||
|
||||
use App\Http\Controllers\ApiController;
|
||||
use App\Http\Requests\Tenant\IndexTenantRequest;
|
||||
use App\Http\Requests\Tenant\StoreTenantRequest;
|
||||
use App\Http\Requests\Tenant\UpdateTenantRequest;
|
||||
use App\Http\Resources\Tenant\TenantResource;
|
||||
use App\Models\Tenant;
|
||||
use App\Services\Tenant\TenantService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TenantController extends ApiController
|
||||
{
|
||||
public function __construct(
|
||||
protected TenantService $service
|
||||
) {}
|
||||
|
||||
public function index(IndexTenantRequest $request)
|
||||
{
|
||||
$data = $this->service->list(
|
||||
$request->validated(),
|
||||
$request->user()
|
||||
);
|
||||
|
||||
return $this->successPaginated(
|
||||
$data,
|
||||
TenantResource::class,
|
||||
'Data Tenant berhasil diambil'
|
||||
);
|
||||
}
|
||||
|
||||
public function store(StoreTenantRequest $request)
|
||||
{
|
||||
$data = $this->service->create(
|
||||
$request->validated()
|
||||
);
|
||||
|
||||
return $this->created(
|
||||
new TenantResource($data),
|
||||
'Tenant berhasil dibuat'
|
||||
);
|
||||
}
|
||||
|
||||
public function show(Request $request, Tenant $tenant)
|
||||
{
|
||||
$this->authorizeTenantAccess($request, $tenant);
|
||||
|
||||
return $this->success(
|
||||
new TenantResource($tenant),
|
||||
'Detail Tenant berhasil diambil'
|
||||
);
|
||||
}
|
||||
|
||||
public function update(
|
||||
UpdateTenantRequest $request,
|
||||
Tenant $tenant
|
||||
) {
|
||||
$data = $this->service->update(
|
||||
$tenant,
|
||||
$request->validated()
|
||||
);
|
||||
|
||||
return $this->updated(
|
||||
new TenantResource($data),
|
||||
'Tenant berhasil diupdate'
|
||||
);
|
||||
}
|
||||
|
||||
public function destroy(Tenant $tenant)
|
||||
{
|
||||
$this->service->delete($tenant);
|
||||
|
||||
return $this->deleted(
|
||||
'Tenant berhasil dihapus'
|
||||
);
|
||||
}
|
||||
|
||||
private function authorizeTenantAccess(Request $request, Tenant $tenant): void
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
if ($user->isMasterAdmin()) {
|
||||
return;
|
||||
}
|
||||
|
||||
abort_unless(
|
||||
$user->userTenants()->where('tenant_id', $tenant->id)->exists(),
|
||||
403
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user