supertokens-node
Version:
NodeJS driver for SuperTokens core
122 lines (121 loc) • 4.12 kB
TypeScript
// @ts-nocheck
import { ParsedJWTInfo } from "./jwt";
import { CreateOrRefreshAPIResponse, SessionInformation, TypeNormalisedInput } from "./types";
import { Helpers } from "./recipeImplementation";
import RecipeUserId from "../../recipeUserId";
import { UserContext } from "../../types";
/**
* @description call this to "login" a user.
*/
export declare function createNewSession(
helpers: Helpers,
tenantId: string,
recipeUserId: RecipeUserId,
disableAntiCsrf: boolean,
accessTokenPayload: any,
sessionDataInDatabase: any,
userContext: UserContext
): Promise<CreateOrRefreshAPIResponse>;
/**
* @description authenticates a session. To be used in APIs that require authentication
*/
export declare function getSession(
helpers: Helpers,
parsedAccessToken: ParsedJWTInfo,
antiCsrfToken: string | undefined,
doAntiCsrfCheck: boolean,
alwaysCheckCore: boolean,
config: TypeNormalisedInput,
userContext: UserContext
): Promise<{
session: {
handle: string;
userId: string;
recipeUserId: RecipeUserId;
userDataInJWT: any;
expiryTime: number;
tenantId: string;
};
accessToken?: {
token: string;
expiry: number;
createdTime: number;
};
}>;
/**
* @description Retrieves session information from storage for a given session handle
* @returns session data stored in the database, including userData and access token payload, or undefined if sessionHandle is invalid
*/
export declare function getSessionInformation(
helpers: Helpers,
sessionHandle: string,
userContext: UserContext
): Promise<SessionInformation | undefined>;
/**
* @description generates new access and refresh tokens for a given refresh token. Called when client's access token has expired.
* @sideEffects calls onTokenTheftDetection if token theft is detected.
*/
export declare function refreshSession(
helpers: Helpers,
refreshToken: string,
antiCsrfToken: string | undefined,
disableAntiCsrf: boolean,
useDynamicAccessTokenSigningKey: boolean,
userContext: UserContext
): Promise<CreateOrRefreshAPIResponse>;
/**
* @description deletes session info of a user from db. This only invalidates the refresh token. Not the access token.
* Access tokens cannot be immediately invalidated. Unless we add a blacklisting method. Or changed the private key to sign them.
*/
export declare function revokeAllSessionsForUser(
helpers: Helpers,
userId: string,
revokeSessionsForLinkedAccounts: boolean,
tenantId: string | undefined,
revokeAcrossAllTenants: boolean | undefined,
userContext: UserContext
): Promise<string[]>;
/**
* @description gets all session handles for current user. Please do not call this unless this user is authenticated.
*/
export declare function getAllSessionHandlesForUser(
helpers: Helpers,
userId: string,
fetchSessionsForAllLinkedAccounts: boolean,
tenantId: string | undefined,
fetchAcrossAllTenants: boolean | undefined,
userContext: UserContext
): Promise<string[]>;
/**
* @description call to destroy one session
* @returns true if session was deleted from db. Else false in case there was nothing to delete
*/
export declare function revokeSession(
helpers: Helpers,
sessionHandle: string,
userContext: UserContext
): Promise<boolean>;
/**
* @description call to destroy multiple sessions
* @returns list of sessions revoked
*/
export declare function revokeMultipleSessions(
helpers: Helpers,
sessionHandles: string[],
userContext: UserContext
): Promise<string[]>;
/**
* @description: It provides no locking mechanism in case other processes are updating session data for this session as well.
*/
export declare function updateSessionDataInDatabase(
helpers: Helpers,
sessionHandle: string,
newSessionData: any,
userContext: UserContext
): Promise<boolean>;
export declare function updateAccessTokenPayload(
helpers: Helpers,
sessionHandle: string,
newAccessTokenPayload: any,
userContext: UserContext
): Promise<boolean>;