fix: use ownerDid instead of creatorId for Space owner check

The Prisma Space model uses ownerDid (DID string) not creatorId.
Also hoists user lookup to avoid duplicate query.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-17 16:20:07 -07:00
parent ca9d54b01b
commit 6a8fb6b6ec
1 changed files with 5 additions and 3 deletions

View File

@ -50,8 +50,11 @@ export async function resolveUserSpaceRole(
return result;
}
// Check if owner
if (space.creatorId === userId) {
// Fetch user once for DID-based lookups
const user = await prisma.user.findUnique({ where: { id: userId } });
// Check if owner (via DID match)
if (space.ownerDid && user?.did && space.ownerDid === user.did) {
const result: ResolvedRole = { role: SpaceRole.ADMIN, source: 'owner' };
roleCache.set(cacheKey, { role: result, expires: Date.now() + CACHE_TTL });
return result;
@ -74,7 +77,6 @@ export async function resolveUserSpaceRole(
// Fall back to EncryptID server for cross-module membership
try {
const user = await prisma.user.findUnique({ where: { id: userId } });
if (user?.did) {
const url = `${ENCRYPTID_SERVER}/api/spaces/${encodeURIComponent(spaceSlug)}/members/${encodeURIComponent(user.did)}`;
const res = await fetch(url);