diff --git a/src/crypto/verifier.ts b/src/crypto/verifier.ts index 1da92b3..82995f3 100644 --- a/src/crypto/verifier.ts +++ b/src/crypto/verifier.ts @@ -1,6 +1,6 @@ import type { MessageI, RoomI } from 'discreetly-interfaces'; import { str2BigInt } from 'discreetly-interfaces'; -import { RLNVerifier } from 'rlnjs'; +import { RLNFullProof, RLNVerifier } from 'rlnjs'; import vkey from './verification_key'; import { Group } from '@semaphore-protocol/group'; @@ -48,7 +48,7 @@ async function verifyProof(msg: MessageI, room: RoomI, epochErrorRange = 5): Pro } // Check that the proof is correct - return v.verifyProof(rlnIdentifier, msg.proof); + return v.verifyProof(rlnIdentifier, msg.proof as RLNFullProof); } export default verifyProof; diff --git a/src/data/db.ts b/src/data/db.ts index 9414e97..abf06cb 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -131,7 +131,7 @@ export function createSystemMessages(message: string, roomId?: string): Promise< return prisma.rooms.findMany(query) .then(rooms => { if (roomId && rooms.length === 0) { - Promise.reject('Room not found') + return Promise.reject('Room not found') } const createMessages = rooms.map(room => { return prisma.messages.create({ @@ -145,7 +145,10 @@ export function createSystemMessages(message: string, roomId?: string): Promise< }); return Promise.all(createMessages); - }); + }).catch(err => { + console.error(err); + return Promise.reject(err); + }) } @@ -163,18 +166,18 @@ export async function createRoom( userMessageLimit = 1, numClaimCodes = 0, approxNumMockUsers = 20, - type: string = 'PUBLIC' + type: string ): Promise { const claimCodes: { claimcode: string }[] = genClaimCodeArray(numClaimCodes); console.log(claimCodes); const mockUsers: string[] = genMockUsers(approxNumMockUsers); const roomData = { where: { - roomId: genId(serverConfig.id, name).toString() + roomId: genId(serverConfig.id as bigint, name).toString() }, update: {}, create: { - roomId: genId(serverConfig.id, name).toString(), + roomId: genId(serverConfig.id as bigint, name).toString(), name: name, rateLimit: rateLimit, userMessageLimit: userMessageLimit, @@ -184,7 +187,7 @@ export async function createRoom( create: claimCodes } } - }; + }; return await prisma.rooms .upsert(roomData) diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index 3b93f50..3f2a717 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -58,10 +58,22 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { } }); - app.get(['/rooms/:idc', '/api/rooms/:idc'], async (req, res) => { - pp(String('Express: fetching rooms by identityCommitment ' + req.params.idc)); - res.status(200).json(await getRoomsByIdentity(req.params.idc)); - }); + app.get( + ["/rooms/:idc", "/api/rooms/:idc"], + asyncHandler(async (req: Request, res: Response) => { + try { + pp( + String( + "Express: fetching rooms by identityCommitment " + req.params.idc + ) + ); + res.status(200).json(await getRoomsByIdentity(req.params.idc)); + } catch (error) { + console.error(error); + res.status(500).json({ error: "Internal Server Error" }); + } + }) + ); interface JoinData { code: string; @@ -123,10 +135,17 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { const roomName = roomMetadata.roomName; const rateLimit = roomMetadata.rateLimit; const userMessageLimit = roomMetadata.userMessageLimit; - const numClaimCodes = roomMetadata.numClaimCodes || 0; + const numClaimCodes = roomMetadata.numClaimCodes ?? 0; const approxNumMockUsers = roomMetadata.approxNumMockUsers; - const type = roomMetadata.roomType; - createRoom(roomName, rateLimit, userMessageLimit, numClaimCodes, approxNumMockUsers, type) + const type = roomMetadata.roomType as unknown as string; + createRoom( + roomName, + rateLimit, + userMessageLimit, + numClaimCodes, + approxNumMockUsers, + type + ) .then((result) => { console.log(result); if (result) { @@ -186,28 +205,39 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { }); }); - app.post("/admin/message", adminAuth, async (req, res) => { - const { message } = req.body; - pp(String("Express: sending system message: " + message)); - try { - await createSystemMessages(message); - res.status(200).json({ message: "Messages sent to all rooms" }); - } catch (err) { - console.error(err); - res.status(500).json({ error: "Internal Server Error" }); - } - }); + app.post( + "/admin/message", + adminAuth, + asyncHandler(async (req: Request, res: Response) => { + const { message } = req.body as { message: string }; + pp(String("Express: sending system message: " + message)); + try { + await createSystemMessages(message); + res.status(200).json({ message: "Messages sent to all rooms" }); + } catch (err) { + console.error(err); + res.status(500).json({ error: "Internal Server Error" }); + } + }) + ); + + app.post( + "/admin/message/:roomId", + adminAuth, + asyncHandler(async (req: Request, res: Response) => { + const { roomId } = req.params; + const { message } = req.body as { message: string }; + pp( + String("Express: sending system message: " + message + " to " + roomId) + ); + try { + await createSystemMessages(message, roomId); + res.status(200).json({ message: "Message sent to room " + roomId }); + } catch (err) { + console.error(err); + res.status(500).json({ error: "Internal Server Error" }); + } + }) + ); - app.post("/admin/message/:roomId", adminAuth, async (req, res) => { - const { roomId } = req.params; - const { message } = req.body; - pp(String("Express: sending system message: " + message + " to " + roomId)); - try { - await createSystemMessages(message, roomId); - res.status(200).json({ message: "Message sent to room " + roomId }); - } catch (err) { - console.error(err); - res.status(500).json({ error: "Internal Server Error" }); - } - }); } diff --git a/src/utils.ts b/src/utils.ts index 661cd8c..1a52dc7 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -20,7 +20,7 @@ export function genMockUsers(numMockUsers: number): string[] { for (let i = 0; i < newNumMockUsers; i++) { mockUsers.push( genId( - serverConfig.id, + serverConfig.id as bigint, // Generates a random string of length 10 Math.random() .toString(36) diff --git a/tests/express.test.ts b/tests/express.test.ts index 932d43e..0aac0b7 100644 --- a/tests/express.test.ts +++ b/tests/express.test.ts @@ -33,7 +33,7 @@ const room = { type: "PUBLIC" }; -const roomByIdTest = genId(serverConfig.id, room.roomName).toString(); +const roomByIdTest = genId(serverConfig.id as bigint, room.roomName).toString(); let testCode = ""; const testIdentity = randBigint(); const username = "admin";