feat(api): /devices register + paseto v4 (middleware Bearer, bootstrap mobile du token)

This commit is contained in:
m
2026-09-10 07:25:11 +02:00
parent bdf1fadce9
commit caa6e6483c
18 changed files with 407 additions and 27 deletions
+21 -1
View File
@@ -1,5 +1,5 @@
import { getSession } from '../session';
import { DEVICE_USER_ID_KEY, PREFERENCES_KEY } from '../schema';
import { AUTH_TOKEN_KEY, DEVICE_USER_ID_KEY, PREFERENCES_KEY } from '../schema';
import type { UserPreferences } from '../types';
const DEFAULT_PREFERENCES: UserPreferences = {
@@ -38,6 +38,26 @@ export async function saveUserPreferences(preferences: UserPreferences): Promise
);
}
export async function getDeviceAuthToken(): Promise<string | null> {
const db = await getSession();
const row = await db.getFirstAsync<{ value: string }>(
'SELECT "value" FROM user_preferences WHERE "key" = ?',
AUTH_TOKEN_KEY,
);
return row?.value ?? null;
}
export async function saveDeviceAuthToken(token: string): Promise<void> {
const db = await getSession();
await db.runAsync(
`INSERT INTO user_preferences ("key", "value", updated_at) VALUES (?, ?, ?)
ON CONFLICT("key") DO UPDATE SET "value" = excluded."value", updated_at = excluded.updated_at`,
AUTH_TOKEN_KEY,
token,
Date.now(),
);
}
export async function getUserPreferences(): Promise<UserPreferences> {
const db = await getSession();
const row = await db.getFirstAsync<{ value: string }>(