import type { ComputedRef, Ref } from 'vue'; import type { SessionConfig } from 'h3' import 'vue-router'; declare module 'vue-router' { interface RouteMeta { requiresAuth?: boolean; guestsGoesTo?: string; usersGoesTo?: string; rights?: string[]; validState?: boolean; } } import '@nuxt/schema'; declare module '@nuxt/schema' { interface RuntimeConfig { session: SessionConfig; } } export interface UserRawData { id: number; username: string; email: string; state: number; } export interface UserExtendedData { signin: string; lastTimestamp: string; logCount: number; } export type Permissions = { permissions: string[] }; export type User = UserRawData & UserExtendedData & Permissions; export interface UserSession { user?: User; id?: string; } export interface UserSessionRequired extends UserSession { user: User; id: string; } export interface UserSessionComposable { /** * Computed indicating if the auth session is ready */ ready: ComputedRef /** * Computed indicating if the user is logged in. */ loggedIn: ComputedRef /** * The user object if logged in, null otherwise. */ user: ComputedRef /** * The session object. */ session: Ref /** * Fetch the user session from the server. */ fetch: () => Promise /** * Clear the user session and remove the session cookie. */ clear: () => Promise }