deletionRequest->id); if (! $request) { Log::info('Skipping account deletion - request no longer exists', [ 'deletion_request_id' => $this->deletionRequest->id, ]); return; } // Verify the request is still valid for deletion if (! $request->isActive()) { Log::info('Skipping account deletion - request no longer active', [ 'deletion_request_id' => $request->id, ]); return; } $user = $request->user; if (! $user) { Log::warning('User not found for deletion request', [ 'deletion_request_id' => $request->id, ]); $request->complete(); return; } // Update local reference $this->deletionRequest = $request; $userId = $user->id; DB::transaction(function () use ($user) { // Mark request as completed $this->deletionRequest->complete(); // Delete all workspaces owned by the user if (method_exists($user, 'ownedWorkspaces')) { $user->ownedWorkspaces()->each(function ($workspace) { $workspace->delete(); }); } // Hard delete user account $user->forceDelete(); }); Log::info('Account deleted successfully', [ 'user_id' => $userId, 'deletion_request_id' => $this->deletionRequest->id, 'via' => 'job', ]); } /** * Handle a job failure. */ public function failed(\Throwable $exception): void { Log::error('Failed to process account deletion', [ 'deletion_request_id' => $this->deletionRequest->id, 'error' => $exception->getMessage(), ]); } /** * Get the tags that should be assigned to the job. * * @return array */ public function tags(): array { return [ 'account-deletion', 'user:'.$this->deletionRequest->user_id, ]; } }