diff options
Diffstat (limited to 'src/service')
-rw-r--r-- | src/service/friend.ts | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/service/friend.ts b/src/service/friend.ts index 8b5ab38..8266323 100644 --- a/src/service/friend.ts +++ b/src/service/friend.ts @@ -66,8 +66,44 @@ const list = async (userId: Number) => { }) } +const get = async (userId: Number, friendId: Number) => { + // Verify that users are friends. Seeing a non-friend's profile isn't allowed + const friendship = await prisma.friend.findFirst({ + // @ts-ignore + where: { + AND: [ + // @ts-ignore + { userId: userId }, + // @ts-ignore + { friendId: friendId }, + ] + } + }) + + if (friendship == null) { + // user isn't friends with them + throw new Error("forbidden"); + } + + const friend = await prisma.user.findUnique({ + // @ts-ignore + where: { id: friendId } + }) + // @ts-ignore + delete friend["password"]; + // @ts-ignore + delete friend["refreshTokenVersion"]; + // @ts-ignore + delete friend["createdAt"]; + // @ts-ignore + delete friend["updatedAt"]; + + return friend; +} + export { friend, unfriend, - list + list, + get }
\ No newline at end of file |