Fix public character unreachable for non logged users

This commit is contained in:
2026-07-06 18:37:43 +02:00
parent ce307c3095
commit 272fcaf301

View File

@@ -6,7 +6,6 @@ import { and, eq, exists, getTableColumns, isNotNull, or, sql } from 'drizzle-or
export default defineEventHandler(async (e) => { export default defineEventHandler(async (e) => {
const id = getRouterParam(e, "id"); const id = getRouterParam(e, "id");
if(!id) if(!id)
{ {
setResponseStatus(e, 400); setResponseStatus(e, 400);
@@ -14,12 +13,11 @@ export default defineEventHandler(async (e) => {
} }
const session = await getUserSession(e); const session = await getUserSession(e);
/* if(!session.user)
if(!session.user)
{ {
setResponseStatus(e, 401); setResponseStatus(e, 401);
return; return;
} } */
const db = useDatabase(); const db = useDatabase();
@@ -44,10 +42,10 @@ export default defineEventHandler(async (e) => {
} }
} }
}, },
where: and(eq(characterTable.id, parseInt(id, 10)), or(eq(characterTable.visibility, 'public'), eq(characterTable.owner, session.user!.id), exists(db.select({ id: sql`NULL` }).from(campaignCharactersTable) where: and(eq(characterTable.id, parseInt(id, 10)), or(eq(characterTable.visibility, 'public'), eq(characterTable.owner, session.user?.id ?? 0), exists(db.select({ id: sql`NULL` }).from(campaignCharactersTable)
.leftJoin(campaignTable, eq(campaignCharactersTable.id, campaignTable.id)) .leftJoin(campaignTable, eq(campaignCharactersTable.id, campaignTable.id))
.leftJoin(campaignMembersTable, and(eq(campaignMembersTable.id, campaignTable.id), eq(campaignMembersTable.user, session.user.id))) .leftJoin(campaignMembersTable, and(eq(campaignMembersTable.id, campaignTable.id), eq(campaignMembersTable.user, session.user?.id ?? 0)))
.where(and(eq(campaignCharactersTable.character, parseInt(id, 10)), or(eq(campaignTable.owner, session.user.id), isNotNull(campaignMembersTable.user))))))), .where(and(eq(campaignCharactersTable.character, parseInt(id, 10)), or(eq(campaignTable.owner, session.user?.id ?? 0), isNotNull(campaignMembersTable.user))))))),
}).sync(); }).sync();
if(character !== undefined) if(character !== undefined)