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
+1
View File
@@ -39,6 +39,7 @@ export {
DATABASE_NAME,
DATABASE_VERSION,
DEVICE_USER_ID_KEY,
AUTH_TOKEN_KEY,
PREFERENCES_KEY,
PERMISSION_TTL_MS,
} from './schema';
+2
View File
@@ -11,6 +11,8 @@ export {
saveUserPreferences,
getUserPreferences,
getDeviceUserId,
getDeviceAuthToken,
saveDeviceAuthToken,
} from './preferences';
export {
getResourcePermission,
+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 }>(
+2
View File
@@ -6,6 +6,8 @@ export const PREFERENCES_KEY = 'user_preferences';
export const DEVICE_USER_ID_KEY = 'device_user_id';
export const AUTH_TOKEN_KEY = 'auth_token';
export const FOLDER_COLUMNS = [
'resource_id',
'uri',