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