From d6b99b2058f99d4ebdd5b173224fedce952dbe33 Mon Sep 17 00:00:00 2001
From: steel <mael.acier@ensiie.fr>
Date: Sun, 5 May 2024 20:18:54 +0200
Subject: [PATCH] fix default impl

---
 package.json       |  2 +-
 src/lib/default.ts | 21 ++++++++++++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/package.json b/package.json
index 8b4fdd1..4440b79 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 f589442..3386c2d 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;
-- 
GitLab