forceFill([ 'id' => $authCodeEntity->getIdentifier(), 'user_id' => $authCodeEntity->getUserIdentifier(), 'client_id' => $authCodeEntity->getClient()->getIdentifier(), 'workspace_id' => $this->resolveWorkspaceId($authCodeEntity->getUserIdentifier()), '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; } }