Mejora de fromts

This commit is contained in:
2026-03-03 11:25:37 -07:00
parent 49dfb3ef24
commit f10b15d91b
19 changed files with 180 additions and 2115 deletions

11
frontend-client/src/app.d.ts vendored Normal file
View File

@@ -0,0 +1,11 @@
import type { User } from '$lib/stores/auth';
declare global {
namespace App {
interface Locals {
user: User | null;
}
}
}
export {};

View File

@@ -0,0 +1,19 @@
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ event, resolve }) => {
const cookie = event.request.headers.get('cookie') ?? '';
if (cookie) {
try {
const apiUrl = process.env.PUBLIC_API_URL ?? 'http://backend:8000';
const response = await fetch(`${apiUrl}/v1/auth/me`, {
headers: { cookie, 'X-App': 'client' }
});
event.locals.user = response.ok ? await response.json() : null;
} catch {
event.locals.user = null;
}
} else {
event.locals.user = null;
}
return resolve(event);
};

View File

@@ -128,6 +128,11 @@ function createAuthStore() {
update(state => ({ ...state, user }));
},
// Set user from SSR pre-load (no fetch required)
setUser: (user: User) => {
set({ user, token: null, isAuthenticated: true, isLoading: false });
},
// Set loading state
setLoading: (isLoading: boolean) => {
update(state => ({ ...state, isLoading }));

View File

@@ -0,0 +1,7 @@
import type { LayoutServerLoad } from './$types';
export const load: LayoutServerLoad = ({ locals }) => {
return {
user: locals.user ?? null
};
};

View File

@@ -9,10 +9,14 @@
import { browser } from '$app/environment';
import '../app.css';
export let data;
let mounted = false;
onMount(async () => {
await auth.init();
onMount(() => {
if (data.user && !$auth.isAuthenticated) {
auth.setUser(data.user);
}
mounted = true;
});