From fdc04502f9ef51c42c2a9908b304d11e887fd32a Mon Sep 17 00:00:00 2001 From: Levente Orban Date: Tue, 11 Aug 2026 09:02:40 +0200 Subject: [PATCH] feat: change the userId beahviour --- src/hooks.server.ts | 7 +++---- src/lib/generateUserId.ts | 8 ++++---- src/lib/i18n/it.json | 2 -- src/lib/i18n/messages.json | 2 -- src/lib/types.ts | 4 ++-- src/routes/+layout.server.ts | 7 ------- src/routes/+layout.svelte | 8 +------- src/routes/api/federation/events/+server.ts | 1 - src/routes/create/+page.svelte | 2 -- src/routes/discover/+page.server.ts | 1 - src/routes/event/+page.server.ts | 1 - src/routes/event/+page.svelte | 2 -- src/routes/event/[id]/+page.server.ts | 12 +++++------- src/routes/event/[id]/+page.svelte | 8 +++----- src/routes/event/[id]/edit/+page.server.ts | 9 ++++++--- src/routes/event/[id]/edit/+page.svelte | 2 +- src/routes/event/[id]/invite/[token]/+page.server.ts | 9 ++++----- src/routes/event/[id]/invite/[token]/+page.svelte | 8 +++----- svelte.config.js | 5 +---- 19 files changed, 33 insertions(+), 65 deletions(-) delete mode 100644 src/routes/+layout.server.ts diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 3610d7e..5d02864 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -27,17 +27,16 @@ export const handle: Handle = async ({ event, resolve }) => { } const cactoideUserId = event.cookies.get('cactoideUserId'); - const userId = generateUserId(); const DAYS = 400; // practical upper bound in many browsers for cookies const MAX_AGE = 60 * 60 * 24 * DAYS; const PATH = '/'; if (!cactoideUserId) { - logger.debug({ userId }, 'No cactoideUserId cookie found, generating new one'); - event.cookies.set('cactoideUserId', userId, { path: PATH, maxAge: MAX_AGE }); + logger.debug('No cactoideUserId cookie found, generating new one'); + event.cookies.set('cactoideUserId', generateUserId(), { path: PATH, maxAge: MAX_AGE }); } else { - logger.debug({ cactoideUserId }, 'cactoideUserId cookie found, using existing one'); + logger.debug('cactoideUserId cookie found, using existing one'); } return resolve(event); diff --git a/src/lib/generateUserId.ts b/src/lib/generateUserId.ts index fd8ecee..8cdd8eb 100644 --- a/src/lib/generateUserId.ts +++ b/src/lib/generateUserId.ts @@ -1,5 +1,5 @@ -export const generateUserId = () => { - const userId = 'user_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); +import { randomUUID } from 'crypto'; - return userId; -}; +// This id is the only credential the app has — it must not be guessable, +// and it must never be serialized to the client. +export const generateUserId = () => 'user_' + randomUUID(); diff --git a/src/lib/i18n/it.json b/src/lib/i18n/it.json index 103ab33..d47a3c7 100644 --- a/src/lib/i18n/it.json +++ b/src/lib/i18n/it.json @@ -259,8 +259,6 @@ "layout": { "defaultTitle": "Cactoide -", "defaultDescription": "Crea e gestisci gli RSVP degli eventi", - "userIdCookieText": "Il tuo UserID memorizzato come cookie:", - "firstTimeVisiting": "Prima visita. Generazione di un nuovo UserID...", "copyright": "© 2025 Cactoide" } } diff --git a/src/lib/i18n/messages.json b/src/lib/i18n/messages.json index a588199..241e8df 100644 --- a/src/lib/i18n/messages.json +++ b/src/lib/i18n/messages.json @@ -291,8 +291,6 @@ "layout": { "defaultTitle": "Cactoide -", "defaultDescription": "Create and manage event RSVPs", - "userIdCookieText": "Your UserID stored as a cookie:", - "firstTimeVisiting": "First time visiting. Generating new UserID...", "copyright": "© 2025 Cactoide" } } diff --git a/src/lib/types.ts b/src/lib/types.ts index 4dab522..98079aa 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -14,7 +14,7 @@ export interface Event { type: EventType; attendee_limit?: number; visibility: EventVisibility; - user_id: string; + is_creator?: boolean; // Optional: absent on events fetched from federated instances created_at: string; updated_at: string; federation?: boolean; // Optional: true if event is from a federated instance @@ -25,7 +25,7 @@ export interface RSVP { id: string; event_id: string; name: string; - user_id: string; + is_mine: boolean; created_at: string; } diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts deleted file mode 100644 index 04fe472..0000000 --- a/src/routes/+layout.server.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function load({ cookies }) { - const cactoideUserId = cookies.get('cactoideUserId'); - - return { - cactoideUserId - }; -} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 85c9c9c..406cc7b 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,7 +3,7 @@ import Navbar from '$lib/components/Navbar.svelte'; import { t } from '$lib/i18n/i18n.js'; - let { data, children } = $props(); + let { children } = $props(); @@ -28,12 +28,6 @@