resolveWorkspaceId($authCodeEntity->getUserIdentifier()); if ($workspaceId === null) { throw OAuthServerException::invalidRequest( 'workspace_id', 'Unable to bind this connection to a workspace. Reconnect from a workspace you belong to.', ); } Passport::authCode()->forceFill([ 'id' => $authCodeEntity->getIdentifier(), 'user_id' => $authCodeEntity->getUserIdentifier(), 'client_id' => $authCodeEntity->getClient()->getIdentifier(), 'workspace_id' => $workspaceId, 'scopes' => json_encode($authCodeEntity->getScopes()), 'revoked' => false, 'expires_at' => $authCodeEntity->getExpiryDateTime(), ])->save(); } private function resolveWorkspaceId(?string $userId): ?string { $user = Auth::user(); if (! $user instanceof User && $userId) { $user = User::query()->find($userId); } if (! $user instanceof User) { return null; } $requestedId = request()->string('workspace_id'); if ($requestedId->isEmpty()) { return null; } $workspace = Workspace::query()->find($requestedId->value()); if ($workspace === null || ! $user->belongsToWorkspace($workspace)) { return null; } return $workspace->id; } }