@speckle/shared
Version:
Shared code between various Speckle JS packages
61 lines • 4.92 kB
TypeScript
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