@asgardeo/nextjs
Version:
Next.js implementation of Asgardeo JavaScript SDK.
94 lines (93 loc) • 2.75 kB
TypeScript
/**
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { JWTPayload } from 'jose';
/**
* Session token payload interface
*/
export interface SessionTokenPayload extends JWTPayload {
/** User ID */
sub: string;
/** Session ID */
sessionId: string;
/** OAuth scopes */
scopes: string[];
/** Organization ID if applicable */
organizationId?: string;
/** Issued at timestamp */
iat: number;
/** Expiration timestamp */
exp: number;
}
/**
* Session management utility class for JWT-based session cookies
*/
declare class SessionManager {
private static readonly DEFAULT_EXPIRY_SECONDS;
/**
* Get the signing secret from environment variable
* Throws error in production if not set
*/
private static getSecret;
/**
* Create a temporary session cookie for login initiation
*/
static createTempSession(sessionId: string): Promise<string>;
/**
* Create a session cookie with user information
*/
static createSessionToken(accessToken: string, userId: string, sessionId: string, scopes: string, organizationId?: string, expirySeconds?: number): Promise<string>;
/**
* Verify and decode a session token
*/
static verifySessionToken(token: string): Promise<SessionTokenPayload>;
/**
* Verify and decode a temporary session token
*/
static verifyTempSession(token: string): Promise<{
sessionId: string;
}>;
/**
* Get session cookie options
*/
static getSessionCookieOptions(): {
httpOnly: boolean;
secure: boolean;
sameSite: "lax";
path: string;
maxAge: number;
};
/**
* Get temporary session cookie options
*/
static getTempSessionCookieOptions(): {
httpOnly: boolean;
secure: boolean;
sameSite: "lax";
path: string;
maxAge: number;
};
/**
* Get session cookie name
*/
static getSessionCookieName(): string;
/**
* Get temporary session cookie name
*/
static getTempSessionCookieName(): string;
}
export default SessionManager;