diff --git a/package.json b/package.json index 8b4fdd17e899d571f68bbd57bc14c30dc81a4e8b..4440b79d1212cb86219befca037cafa5f933c933 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@arise/aidc-sveltekit", - "version": "0.2.2", + "version": "0.2.3", "type": "module", "scripts": { "dev": "vite dev", diff --git a/src/lib/default.ts b/src/lib/default.ts index f5894422af1f1b07807f534e8b47dab47d3007ea..3386c2d091e265b174d94a2770238e477d7cf5fe 100644 --- a/src/lib/default.ts +++ b/src/lib/default.ts @@ -22,7 +22,7 @@ class DefaultLucia extends LuciaWrapper<DatabaseUser> { this.db.exec(`CREATE TABLE IF NOT EXISTS user ( id TEXT NOT NULL PRIMARY KEY, subject TEXT NOT NULL UNIQUE, - claims JSON NOT NULL + claims TEXT NOT NULL )`); this.db.exec(`CREATE TABLE IF NOT EXISTS session ( @@ -34,16 +34,22 @@ class DefaultLucia extends LuciaWrapper<DatabaseUser> { )`); } - getUser(subject: string) { - return this.db + getUser(subject: string): DatabaseUser | undefined { + const user = this.db .prepare("SELECT * FROM user WHERE subject = ?") - .get(subject) as DatabaseUser | undefined; + .get(subject) as InternalUser | undefined; + if (!user) return undefined; + return { + id: user.id, + subject: user.subject, + claims: JSON.parse(user.claims), + }; } createUser(subject: string, userId: string, claims: IdTokenClaims) { this.db .prepare("INSERT INTO user (id, subject, claims) VALUES (?, ?, ?)") - .run(userId, subject, claims); + .run(userId, subject, JSON.stringify(claims)); } } @@ -57,6 +63,11 @@ declare module "lucia" { } } +interface InternalUser { + id: string; + subject: string; + claims: string; +} export interface DatabaseUser { id: string; subject: string;