user(); if (! $user instanceof User) { abort(403); } $validated = $request->validate([ 'workspace_id' => ['required', 'integer'], ]); $workspace = Workspace::query()->whereKey($validated['workspace_id'])->first(); if (! $workspace instanceof Workspace) { abort(404); } if (! empty($workspace->archived_at)) { abort(404); } $context = app(WorkspaceContext::class); if (! $context->isMember($user, $workspace)) { abort(404); } $prevWorkspaceId = $context->currentWorkspaceId($request); $context->setCurrentWorkspace($workspace, $user, $request); /** @var WorkspaceAuditLogger $auditLogger */ $auditLogger = app(WorkspaceAuditLogger::class); $auditLogger->log( workspace: $workspace, action: AuditActionId::WorkspaceSelected->value, context: [ 'metadata' => [ 'method' => 'manual', 'reason' => 'context_bar', 'prev_workspace_id' => $prevWorkspaceId, ], ], actor: $user, resourceType: 'workspace', resourceId: (string) $workspace->getKey(), ); $intendedUrl = WorkspaceIntendedUrl::consume($request); if ($intendedUrl !== null) { return redirect()->to($intendedUrl); } /** @var WorkspaceRedirectResolver $resolver */ $resolver = app(WorkspaceRedirectResolver::class); return redirect()->to($resolver->resolve($workspace, $user)); } }