diff --git a/lib/api/controllers/public/users/getPublicUser.ts b/lib/api/controllers/public/users/getPublicUser.ts index 8e17887..e5f1138 100644 --- a/lib/api/controllers/public/users/getPublicUser.ts +++ b/lib/api/controllers/public/users/getPublicUser.ts @@ -29,7 +29,23 @@ export default async function getPublicUser( (usernames) => usernames.username ); - if (user?.isPrivate) { + const isInAPublicCollection = await prisma.collection.findFirst({ + where: { + ["OR"]: [ + { ownerId: user.id }, + { + members: { + some: { + userId: user.id, + }, + }, + }, + ], + isPublic: true, + }, + }); + + if (user?.isPrivate && !isInAPublicCollection) { if (requestingId) { const requestingUser = await prisma.user.findUnique({ where: { id: requestingId }, diff --git a/pages/api/v1/avatar/[id].ts b/pages/api/v1/avatar/[id].ts index d44d033..8c591ff 100644 --- a/pages/api/v1/avatar/[id].ts +++ b/pages/api/v1/avatar/[id].ts @@ -25,7 +25,30 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) { }, }); - if (targetUser?.isPrivate) { + if (!targetUser) { + return res + .setHeader("Content-Type", "text/plain") + .status(400) + .send("File inaccessible."); + } + + const isInAPublicCollection = await prisma.collection.findFirst({ + where: { + ["OR"]: [ + { ownerId: targetUser.id }, + { + members: { + some: { + userId: targetUser.id, + }, + }, + }, + ], + isPublic: true, + }, + }); + + if (targetUser?.isPrivate && !isInAPublicCollection) { if (!userId) { return res .setHeader("Content-Type", "text/plain") diff --git a/pages/public/collections/[id].tsx b/pages/public/collections/[id].tsx index eea44bc..d6b3531 100644 --- a/pages/public/collections/[id].tsx +++ b/pages/public/collections/[id].tsx @@ -185,8 +185,11 @@ export default function PublicCollections() { ) : null}

- By {collectionOwner.name} and {collection.members.length}{" "} - others. + By {collectionOwner.name} + {collection.members.length > 0 + ? ` and ${collection.members.length} others` + : undefined} + .

diff --git a/pages/settings/account.tsx b/pages/settings/account.tsx index 95d98af..5998f94 100644 --- a/pages/settings/account.tsx +++ b/pages/settings/account.tsx @@ -334,7 +334,7 @@ export default function Account() { />

- This will limit who can find and add you to other Collections. + This will limit who can find and add you to new Collections.

{user.isPrivate && (