77 lines
1.4 KiB
TypeScript
77 lines
1.4 KiB
TypeScript
import type { ComputedRef, Ref } from 'vue'
|
|
|
|
import 'vue-router';
|
|
declare module 'vue-router'
|
|
{
|
|
interface RouteMeta
|
|
{
|
|
requiresAuth?: boolean;
|
|
guestsGoesTo?: string;
|
|
usersGoesTo?: string;
|
|
rights?: string[];
|
|
validState?: boolean;
|
|
}
|
|
}
|
|
|
|
import 'nuxt';
|
|
declare module 'nuxt'
|
|
{
|
|
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<void>
|
|
/**
|
|
* Clear the user session and remove the session cookie.
|
|
*/
|
|
clear: () => Promise<void>
|
|
} |