UNPKG

authservice-nextjs

Version:

Next.js SDK for Auth Service - Server and client-side authentication with App Router support

100 lines 3.03 kB
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