@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
75 lines • 2.78 kB
TypeScript
import { ReverificationConfig, SessionVerificationAfterMinutes, SessionVerificationLevel } from "./types/sessionVerification.js";
import { CheckAuthorizationWithCustomPermissions, GetToken, PendingSessionOptions } from "./types/session.js";
import { OrganizationCustomPermissionKey, OrganizationCustomRoleKey } from "./types/organizationMembership.js";
import { ActClaim, JwtPayload, SessionStatusClaim } from "./types/jwtv2.js";
import { SignOut } from "./types/clerk.js";
import { UseAuthReturn } from "./types/hooks.js";
//#region src/authorization.d.ts
type AuthorizationOptions = {
userId: string | null | undefined;
orgId: string | null | undefined;
orgRole: string | null | undefined;
orgPermissions: string[] | null | undefined;
factorVerificationAge: [number, number] | null;
features: string | null | undefined;
plans: string | null | undefined;
};
declare const splitByScope: (fea: string | null | undefined) => {
org: string[];
user: string[];
};
declare const validateReverificationConfig: (config: ReverificationConfig | undefined | null) => false | (() => {
level: SessionVerificationLevel;
afterMinutes: SessionVerificationAfterMinutes;
});
/**
* Creates a function for comprehensive user authorization checks.
* Combines organization, billing, and reverification checks. The returned function
* authorizes only when every requested dimension passes; any requested dimension
* that cannot be satisfied (including missing or malformed session data) denies
* the request. Fails if `userId` is missing.
*/
declare const createCheckAuthorization: (options: AuthorizationOptions) => CheckAuthorizationWithCustomPermissions;
type AuthStateOptions = {
authObject: {
userId?: string | null;
sessionId?: string | null;
sessionStatus?: SessionStatusClaim | null;
sessionClaims?: JwtPayload | null;
actor?: ActClaim | null;
orgId?: string | null;
orgRole?: OrganizationCustomRoleKey | null;
orgSlug?: string | null;
orgPermissions?: OrganizationCustomPermissionKey[] | null;
getToken: GetToken;
signOut: SignOut;
has: (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => boolean;
};
options: PendingSessionOptions;
};
/**
* Shared utility function that centralizes auth state resolution logic,
* preventing duplication across different packages.
*
* @internal
*/
declare const resolveAuthState: ({
authObject: {
sessionId,
sessionStatus,
userId,
actor,
orgId,
orgRole,
orgSlug,
signOut,
getToken,
has,
sessionClaims
},
options: {
treatPendingAsSignedOut
}
}: AuthStateOptions) => UseAuthReturn | undefined;
//#endregion
export { createCheckAuthorization, resolveAuthState, splitByScope, validateReverificationConfig };