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) => {
const id = getRouterParam(e, "id");
if(!id)
{
setResponseStatus(e, 400);
@@ -14,12 +13,11 @@ export default defineEventHandler(async (e) => {
}
const session = await getUserSession(e);
if(!session.user)
/* if(!session.user)
{
setResponseStatus(e, 401);
return;
}
} */
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(campaignMembersTable, and(eq(campaignMembersTable.id, campaignTable.id), eq(campaignMembersTable.user, session.user.id)))
.where(and(eq(campaignCharactersTable.character, parseInt(id, 10)), or(eq(campaignTable.owner, session.user.id), isNotNull(campaignMembersTable.user))))))),
.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 ?? 0), isNotNull(campaignMembersTable.user))))))),
}).sync();
if(character !== undefined)