Skip to content
Extraits de code Groupes Projets
Valider 6906d760 rédigé par Steel's avatar Steel
Parcourir les fichiers

module augmentation

parent 487b5103
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #8410 en échec
// See https://kit.svelte.dev/docs/types#app
import type { Locals as AriseLocals } from "$lib/types.ts";
import type { aidc } from "./auth.ts";
import { Locals as ILocals } from "$lib/types.ts";
declare global {
namespace App {
interface Locals extends AriseLocals<typeof aidc> {}
interface Locals extends ILocals {
user: import("lucia").User | null;
session: import("lucia").Session | null;
}
}
}
......
......@@ -78,3 +78,10 @@ export interface DatabaseSession extends DefaultSessionAttributes {
id: string;
id_token: string;
}
declare module "../index.js" {
interface Foo {
Session: DefaultSessionAttributes;
User: Omit<DatabaseUser<Record<never, never>>, "id">;
}
}
import { redirect, type Handle, error, type RequestEvent } from "@sveltejs/kit";
import { sequence } from "@sveltejs/kit/hooks";
import { generateId, type Session } from "lucia";
import { generateId, Lucia, type Session } from "lucia";
import type { Client, TokenSet } from "openid-client";
import { Issuer, errors, generators } from "openid-client";
import { SEE_OTHER } from "readable-http-codes";
......@@ -15,7 +15,7 @@ import type { Config, CookieNames, Paths } from "./types.js";
import type {
DefaultSessionAttributes,
DefaultUserAttributes,
LuciaAdapter,
// LuciaAdapter,
} from "./lucia.js";
interface InternalUser {
......@@ -29,9 +29,22 @@ export interface DatabaseSession extends DefaultSessionAttributes {
id_token: string;
}
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export interface Foo {}
interface Bar<
User extends Record<never, never>,
Session extends Record<never, never>,
> {
User: User;
Session: Session;
}
declare module "lucia" {
interface Register {
Lucia: LuciaAdapter;
Lucia: Foo extends Bar<infer _User, infer _Session>
? Lucia<_Session, _User>
: never;
DatabaseUserAttributes: Omit<InternalUser, "id">;
DatabaseSessionAttributes: Omit<DatabaseSession, "id">;
}
......
......@@ -5,8 +5,6 @@ import type {
DefaultUserAttributes,
LuciaAdapter,
} from "./lucia.js";
import { AriseIdConnect } from "./index.js";
import type { Session, User } from "lucia";
export interface Config<
Session extends DefaultSessionAttributes,
......@@ -38,15 +36,6 @@ export type CookieNames = {
oauthCodeVerifier: string;
};
type Extract<T> =
T extends AriseIdConnect<infer Session, infer User>
? { session: Session; user: User }
: never;
export interface Locals<
T extends AriseIdConnect<DefaultSessionAttributes, DefaultUserAttributes>,
> {
user: (Extract<T>["user"] & User) | null;
session: (Extract<T>["session"] & Session) | null;
export interface Locals {
authPaths: Paths;
}
import { redirect } from "@sveltejs/kit";
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
export async function load(event) {
type User = Expand<import("lucia").User>;
if (event.locals.user) {
return redirect(302, "/");
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter