mirror of
https://github.com/Discreetly/server.git
synced 2026-01-09 12:37:58 -05:00
fix(jubmoji) changed schema for proper jubmoji spelling
feat(jubmoji) added check to make sure someone can't use a jubmoji more than once
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import { MessageI, RoomI } from 'discreetly-interfaces';
|
||||
import { ClaimCodeI, GateWayIdentityI } from '../../types/';
|
||||
import { ClaimCodeI, GateWayIdentityI, Jubmojis } from '../../types/';
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
/**
|
||||
@@ -155,11 +155,15 @@ export async function findRoomWithMessageId(
|
||||
}
|
||||
|
||||
export async function findAllJubmojiNullifiers() {
|
||||
const jubmojiNullifiers = await prisma.gateWayIdentity.findMany({
|
||||
const jubmojiNullifiers: Jubmojis[] = await prisma.gateWayIdentity.findMany({
|
||||
select: {
|
||||
jubmoji: true
|
||||
}
|
||||
})
|
||||
const usedSigNullifiers: string[] = [];
|
||||
|
||||
return jubmojiNullifiers;
|
||||
jubmojiNullifiers.forEach((nullifier) => {
|
||||
usedSigNullifiers.push(...nullifier.jubmoji as string[]);
|
||||
});
|
||||
return usedSigNullifiers
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import { RoomI } from 'discreetly-interfaces';
|
||||
import { jubmojiVerifier } from '../../gateways/jubmojis/jubmoji';
|
||||
import { JubmojiRequestI } from '../../gateways/jubmojis/jubmoji.types';
|
||||
|
||||
|
||||
const router = express.Router();
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import { VerificationResult, VerifyArgs, ZKP, ZKPPublicSignals } from './jubmoji
|
||||
import { deserializeMembershipProof, hexToBigInt } from './utils';
|
||||
import vkey from './vkey';
|
||||
import { cardPubKeys } from './pubkeys';
|
||||
import { findAllJubmojiNullifiers } from '../../data/db';
|
||||
|
||||
export async function jubmojiVerifier(serializedMembershipProof): Promise<VerificationResult> {
|
||||
const merkleRoot = await getMerkleRootFromCache(collectionPubKeys);
|
||||
@@ -59,9 +60,12 @@ const verifyMembership = async ({
|
||||
return { verified: false };
|
||||
}
|
||||
// TODO! This is where we need to check and make sure someone can't join more than once
|
||||
// if (usedSigNullifiers && usedSigNullifiers.includes(publicSignals.sigNullifier)) {
|
||||
// return { verified: false };
|
||||
// }
|
||||
|
||||
const usedSigNullifiers: string[] = await findAllJubmojiNullifiers();
|
||||
|
||||
if (usedSigNullifiers && usedSigNullifiers.includes(String(publicSignals.sigNullifier))) {
|
||||
return { verified: false };
|
||||
}
|
||||
const verified = await verifyMembershipZKP(vkey, proof.zkp);
|
||||
if (!verified) {
|
||||
return { verified: false };
|
||||
|
||||
@@ -67,3 +67,7 @@ export interface addRoomData {
|
||||
admin?: boolean;
|
||||
discordIds?: string[];
|
||||
}
|
||||
|
||||
export interface Jubmojis {
|
||||
jubmoji: any[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user