UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

61 lines 4.92 kB
import { MaybeUserContext, ProjectContext, UserContext } from '../domain/context.js'; import { Loaders } from '../domain/loaders.js'; import { AuthPolicyCheckFragment, AuthPolicyEnsureFragment } from '../domain/policies.js'; import { ProjectNoAccessError, ProjectNotEnoughPermissionsError, ProjectNotFoundError, ServerNoAccessError, ServerNoSessionError, ServerNotEnoughPermissionsError, WorkspaceNoAccessError, WorkspaceNotEnoughPermissionsError, WorkspacePlanNoFeatureAccessError, WorkspaceReadOnlyError, WorkspacesNotEnabledError, WorkspaceSsoSessionNoAccessError } from '../domain/authErrors.js'; import { StreamRoles } from '../../core/constants.js'; import { WorkspacePlanFeatures } from '../../workspaces/index.js'; /** * Ensure user has a minimum explicit or implicit project role */ export declare const ensureMinimumProjectRoleFragment: AuthPolicyEnsureFragment<typeof Loaders.getProject | typeof Loaders.getServerRole | typeof Loaders.getEnv | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspace | typeof Loaders.getWorkspaceSsoProvider | typeof Loaders.getWorkspaceSsoSession | typeof Loaders.getProjectRole, ProjectContext & UserContext & { /** * Optionally specify role the user should have */ role?: StreamRoles; /** * Optionally only allow explicit project roles */ explicit?: boolean; }, InstanceType<typeof ProjectNoAccessError | typeof ProjectNotFoundError | typeof ProjectNotEnoughPermissionsError>>; /** * Ensure user has access to the project's workspace (has role & SSO session, if any), if it has one */ export declare const ensureProjectWorkspaceAccessFragment: AuthPolicyEnsureFragment<typeof Loaders.getProject | typeof Loaders.getEnv | typeof Loaders.getWorkspaceSsoProvider | typeof Loaders.getWorkspaceSsoSession | typeof Loaders.getWorkspace | typeof Loaders.getWorkspaceRole, { userId: string; projectId: string; }, InstanceType<typeof WorkspaceSsoSessionNoAccessError | typeof WorkspaceNoAccessError | typeof WorkspaceNotEnoughPermissionsError | typeof ProjectNotFoundError>>; /** * Check if project is publicly readable or not */ export declare const checkIfPubliclyReadableProjectFragment: AuthPolicyCheckFragment<typeof Loaders.getProject | typeof Loaders.getEnv, ProjectContext, InstanceType<typeof ProjectNotFoundError>>; /** * Ensure user has implicit/explicit project membership and read access */ export declare const ensureImplicitProjectMemberWithReadAccessFragment: AuthPolicyEnsureFragment<typeof Loaders.getProject | typeof Loaders.getEnv | typeof Loaders.getServerRole | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspace | typeof Loaders.getWorkspaceSsoProvider | typeof Loaders.getWorkspaceSsoSession | typeof Loaders.getProjectRole | typeof Loaders.getAdminOverrideEnabled, MaybeUserContext & ProjectContext & { /** * Optionally specify role the user should have */ role?: StreamRoles; }, InstanceType<typeof ProjectNotFoundError | typeof ServerNoAccessError | typeof ServerNoSessionError | typeof ServerNotEnoughPermissionsError | typeof ProjectNoAccessError | typeof WorkspaceNoAccessError | typeof WorkspaceSsoSessionNoAccessError | typeof ProjectNotEnoughPermissionsError | typeof WorkspaceNotEnoughPermissionsError>>; /** * Ensure user has implicit/explicit project membership and write access */ export declare const ensureImplicitProjectMemberWithWriteAccessFragment: AuthPolicyEnsureFragment<typeof Loaders.getProject | typeof Loaders.getEnv | typeof Loaders.getServerRole | typeof Loaders.getWorkspaceRole | typeof Loaders.getWorkspace | typeof Loaders.getWorkspaceSsoProvider | typeof Loaders.getWorkspaceSsoSession | typeof Loaders.getProjectRole, MaybeUserContext & ProjectContext & { /** * By default assumes Contributor+ for any writes, but some operations * may allow for lower roles (e.g. comments) */ role?: StreamRoles; }, InstanceType<typeof ProjectNotFoundError | typeof ServerNoAccessError | typeof ServerNoSessionError | typeof ProjectNoAccessError | typeof WorkspaceNoAccessError | typeof WorkspaceSsoSessionNoAccessError | typeof ServerNotEnoughPermissionsError | typeof ProjectNotEnoughPermissionsError | typeof WorkspaceNotEnoughPermissionsError>>; /** * Ensure project is workspaced and has access to a specific plan feature */ export declare const ensureCanUseProjectWorkspacePlanFeatureFragment: AuthPolicyEnsureFragment<typeof Loaders.getEnv | typeof Loaders.getProject | typeof Loaders.getWorkspacePlan, ProjectContext & { feature: WorkspacePlanFeatures; /** * Whether to also allow if project is not workspaced at all * Default: false */ allowUnworkspaced?: boolean; }, InstanceType<typeof WorkspacesNotEnabledError | typeof ProjectNotFoundError | typeof WorkspaceNoAccessError | typeof WorkspaceReadOnlyError | typeof WorkspacePlanNoFeatureAccessError>>; //# sourceMappingURL=projects.d.ts.map