authservice-nextjs
Version:
Next.js SDK for Auth Service - Server and client-side authentication with App Router support
100 lines • 3.03 kB
TypeScript
import { Permission, Role } from 'authservice-node';
import { NextApiRequest, NextApiResponse } from 'next';
import { NextRequest } from 'next/server';
import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
export interface NextAuthConfig {
authServiceUrl: string;
appId: string;
appSecret: string;
cookieName?: string;
cookieDomain?: string;
cookieSecure?: boolean;
cookieHttpOnly?: boolean;
cookieSameSite?: 'strict' | 'lax' | 'none';
cookiePath?: string;
loginUrl?: string;
unauthorizedUrl?: string;
redirectOnError?: boolean;
sessionCookieName?: string;
}
export interface NextApiRequestWithAuth extends NextApiRequest {
user?: {
id: string;
email?: string;
appId: string;
tenantId: string;
permissions?: string[];
roles?: Role[];
};
authContext?: {
token: string;
permissions: Permission[];
roles: Role[];
};
}
export type NextApiHandlerWithAuth<T = any> = (req: NextApiRequestWithAuth, res: NextApiResponse<T>) => void | Promise<void>;
export interface NextRequestWithAuth extends NextRequest {
user?: {
id: string;
email?: string;
appId: string;
tenantId: string;
permissions?: string[];
roles?: Role[];
};
}
export interface MiddlewareOptions {
onError?: (error: Error) => void | Promise<void>;
redirectTo?: string;
returnError?: boolean;
}
export type GetServerSidePropsWithAuth<P extends {
[key: string]: any;
} = {
[key: string]: any;
}, Q extends {
[key: string]: any;
} = {
[key: string]: any;
}> = (context: GetServerSidePropsContext<Q> & {
user?: {
id: string;
email?: string;
permissions?: string[];
roles?: Role[];
};
}) => Promise<GetServerSidePropsResult<P>>;
export interface AuthState {
user: {
id: string;
email?: string;
permissions: string[];
roles: Role[];
} | null;
loading: boolean;
error: Error | null;
}
export interface UseAuthReturn extends AuthState {
hasPermission: (permission: string) => boolean;
hasAnyPermission: (permissions: string[]) => boolean;
hasAllPermissions: (permissions: string[]) => boolean;
hasRole: (roleName: string) => boolean;
checkPermission: (permission: string) => Promise<boolean>;
refreshPermissions: () => Promise<void>;
}
export interface PermissionGuardProps {
permission?: string;
permissions?: string[];
requireAll?: boolean;
fallback?: React.ReactNode;
redirectTo?: string;
children: React.ReactNode;
}
export type ServerActionWithAuth<T = void> = (formData: FormData, user: {
id: string;
email?: string;
permissions: string[];
roles: Role[];
}) => Promise<T>;
export { Permission, Role, UserPermissions, PermissionCheckResult, BatchPermissionCheckResult, AuthServiceError, TokenError, PermissionError, } from 'authservice-node';
//# sourceMappingURL=types.d.ts.map