UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

45 lines 4.28 kB
import { AuthPolicyEnsureFragment } from '../domain/policies.js'; import { PersonalProjectsLimitedError, ProjectNotFoundError, ServerNoAccessError, ServerNoSessionError, ServerNotEnoughPermissionsError, WorkspaceLimitsReachedError, WorkspaceNoAccessError, WorkspaceNoEditorSeatError, WorkspaceNotEnoughPermissionsError, WorkspacePlanNoFeatureAccessError, WorkspaceReadOnlyError, WorkspacesNotEnabledError, WorkspaceSsoSessionNoAccessError } from '../domain/authErrors.js'; import { Loaders } from '../domain/loaders.js'; import { WorkspaceRoles } from '../../core/constants.js'; import { MaybeUserContext, MaybeWorkspaceContext, ProjectContext, WorkspaceContext } from '../domain/context.js'; import { WorkspacePlanFeatures } from '../../workspaces/helpers/features.js'; /** * Ensure user has a workspace role, and a valid SSO session (if SSO is configured) */ export declare const ensureWorkspaceRoleAndSessionFragment: AuthPolicyEnsureFragment<'getWorkspaceRole' | 'getWorkspaceSsoProvider' | 'getWorkspaceSsoSession' | 'getWorkspace', { userId: string; workspaceId: string; role?: WorkspaceRoles; }, InstanceType<typeof WorkspaceSsoSessionNoAccessError | typeof WorkspaceNoAccessError | typeof WorkspaceNotEnoughPermissionsError>>; /** * Ensure the workspaces module is enabled */ export declare const ensureWorkspacesEnabledFragment: AuthPolicyEnsureFragment<typeof Loaders.getEnv, {}, InstanceType<typeof WorkspacesNotEnabledError>>; /** * Ensure workspace is not read-only */ export declare const ensureWorkspaceNotReadOnlyFragment: AuthPolicyEnsureFragment<typeof Loaders.getWorkspacePlan, WorkspaceContext, InstanceType<typeof WorkspaceNoAccessError | typeof WorkspaceReadOnlyError>>; /** * Ensure workspace can accept new project (not read-only, limits not reached). * If userId is specified, will also check for user role & seat */ export declare const ensureWorkspaceProjectCanBeCreatedFragment: AuthPolicyEnsureFragment<typeof Loaders.getWorkspacePlan | typeof Loaders.getWorkspaceSeat | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspaceLimits | typeof Loaders.getWorkspaceProjectCount, WorkspaceContext & MaybeUserContext, InstanceType<typeof WorkspaceNoAccessError | typeof WorkspaceReadOnlyError | typeof WorkspaceLimitsReachedError | typeof WorkspaceNoEditorSeatError | typeof WorkspaceNotEnoughPermissionsError>>; /** * Ensure model can be created (workspace not read-only, limits not reached). * If userId is specified, will also check for appropriate user role & seat */ export declare const ensureModelCanBeCreatedFragment: AuthPolicyEnsureFragment<typeof Loaders.getEnv | typeof Loaders.getWorkspacePlan | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspaceLimits | typeof Loaders.getProject | typeof Loaders.getWorkspaceModelCount, ProjectContext & MaybeWorkspaceContext & MaybeUserContext & { /** * How many models we're testing being added. Defaults to 1 */ addedModelCount?: number; }, InstanceType<typeof WorkspaceNoAccessError | typeof WorkspaceReadOnlyError | typeof WorkspaceLimitsReachedError | typeof ProjectNotFoundError | typeof PersonalProjectsLimitedError>>; export declare const ensureUserIsWorkspaceAdminFragment: AuthPolicyEnsureFragment<typeof Loaders.getEnv | typeof Loaders.getServerRole | typeof Loaders.getWorkspace | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspaceSsoProvider | typeof Loaders.getWorkspaceSsoSession | typeof Loaders.getWorkspacePlan, WorkspaceContext & MaybeUserContext, InstanceType<typeof WorkspaceNoAccessError | typeof WorkspaceSsoSessionNoAccessError | typeof WorkspacesNotEnabledError | typeof ServerNoSessionError | typeof ServerNoAccessError | typeof ServerNotEnoughPermissionsError | typeof WorkspaceNotEnoughPermissionsError>>; /** * Check if workspace has access to a specific feature */ export declare const ensureCanUseWorkspacePlanFeatureFragment: AuthPolicyEnsureFragment<typeof Loaders.getWorkspacePlan | typeof Loaders.getEnv, WorkspaceContext & { feature: WorkspacePlanFeatures; }, InstanceType<typeof WorkspaceNoAccessError> | InstanceType<typeof WorkspaceReadOnlyError> | InstanceType<typeof WorkspacePlanNoFeatureAccessError> | InstanceType<typeof WorkspacesNotEnabledError>>; //# sourceMappingURL=workspaces.d.ts.map