obsidian-visualiser/types/auth.d.ts

78 lines
1.5 KiB
TypeScript

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<boolean>
/**
* Computed indicating if the user is logged in.
*/
loggedIn: ComputedRef<boolean>
/**
* The user object if logged in, null otherwise.
*/
user: ComputedRef<User | null>
/**
* The session object.
*/
session: Ref<UserSession>
/**
* Fetch the user session from the server.
*/
fetch: () => Promise<boolean>
/**
* Clear the user session and remove the session cookie.
*/
clear: () => Promise<void>
}