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:
Tanner Shaw
2023-11-05 13:04:46 -06:00
parent b908437dd4
commit 99a0623ef0
4 changed files with 19 additions and 6 deletions

View File

@@ -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
}

View File

@@ -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();

View File

@@ -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 };

View File

@@ -67,3 +67,7 @@ export interface addRoomData {
admin?: boolean;
discordIds?: string[];
}
export interface Jubmojis {
jubmoji: any[];
}