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 // See https://kit.svelte.dev/docs/types#app
import { Locals as ILocals } from "$lib/types.ts";
import type { Locals as AriseLocals } from "$lib/types.ts";
import type { aidc } from "./auth.ts";
declare global { declare global {
namespace App { 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 { ...@@ -78,3 +78,10 @@ export interface DatabaseSession extends DefaultSessionAttributes {
id: string; id: string;
id_token: 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 { redirect, type Handle, error, type RequestEvent } from "@sveltejs/kit";
import { sequence } from "@sveltejs/kit/hooks"; 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 type { Client, TokenSet } from "openid-client";
import { Issuer, errors, generators } from "openid-client"; import { Issuer, errors, generators } from "openid-client";
import { SEE_OTHER } from "readable-http-codes"; import { SEE_OTHER } from "readable-http-codes";
...@@ -15,7 +15,7 @@ import type { Config, CookieNames, Paths } from "./types.js"; ...@@ -15,7 +15,7 @@ import type { Config, CookieNames, Paths } from "./types.js";
import type { import type {
DefaultSessionAttributes, DefaultSessionAttributes,
DefaultUserAttributes, DefaultUserAttributes,
LuciaAdapter, // LuciaAdapter,
} from "./lucia.js"; } from "./lucia.js";
interface InternalUser { interface InternalUser {
...@@ -29,9 +29,22 @@ export interface DatabaseSession extends DefaultSessionAttributes { ...@@ -29,9 +29,22 @@ export interface DatabaseSession extends DefaultSessionAttributes {
id_token: string; 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" { declare module "lucia" {
interface Register { interface Register {
Lucia: LuciaAdapter; Lucia: Foo extends Bar<infer _User, infer _Session>
? Lucia<_Session, _User>
: never;
DatabaseUserAttributes: Omit<InternalUser, "id">; DatabaseUserAttributes: Omit<InternalUser, "id">;
DatabaseSessionAttributes: Omit<DatabaseSession, "id">; DatabaseSessionAttributes: Omit<DatabaseSession, "id">;
} }
......
...@@ -5,8 +5,6 @@ import type { ...@@ -5,8 +5,6 @@ import type {
DefaultUserAttributes, DefaultUserAttributes,
LuciaAdapter, LuciaAdapter,
} from "./lucia.js"; } from "./lucia.js";
import { AriseIdConnect } from "./index.js";
import type { Session, User } from "lucia";
export interface Config< export interface Config<
Session extends DefaultSessionAttributes, Session extends DefaultSessionAttributes,
...@@ -38,15 +36,6 @@ export type CookieNames = { ...@@ -38,15 +36,6 @@ export type CookieNames = {
oauthCodeVerifier: string; oauthCodeVerifier: string;
}; };
type Extract<T> = export interface Locals {
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;
authPaths: Paths; authPaths: Paths;
} }
import { redirect } from "@sveltejs/kit"; import { redirect } from "@sveltejs/kit";
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
export async function load(event) { export async function load(event) {
type User = Expand<import("lucia").User>;
if (event.locals.user) { if (event.locals.user) {
return redirect(302, "/"); 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