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 (#106)
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 { PrismaClient } from '@prisma/client';
|
||||||
import { MessageI, RoomI } from 'discreetly-interfaces';
|
import { MessageI, RoomI } from 'discreetly-interfaces';
|
||||||
import { ClaimCodeI, GateWayIdentityI } from '../../types/';
|
import { ClaimCodeI, GateWayIdentityI, Jubmojis } from '../../types/';
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -155,11 +155,15 @@ export async function findRoomWithMessageId(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function findAllJubmojiNullifiers() {
|
export async function findAllJubmojiNullifiers() {
|
||||||
const jubmojiNullifiers = await prisma.gateWayIdentity.findMany({
|
const jubmojiNullifiers: Jubmojis[] = await prisma.gateWayIdentity.findMany({
|
||||||
select: {
|
select: {
|
||||||
jubmoji: true
|
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 { jubmojiVerifier } from '../../gateways/jubmojis/jubmoji';
|
||||||
import { JubmojiRequestI } from '../../gateways/jubmojis/jubmoji.types';
|
import { JubmojiRequestI } from '../../gateways/jubmojis/jubmoji.types';
|
||||||
|
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { VerificationResult, VerifyArgs, ZKP, ZKPPublicSignals } from './jubmoji
|
|||||||
import { hexToBigInt } from './utils';
|
import { hexToBigInt } from './utils';
|
||||||
import vkey from './vkey';
|
import vkey from './vkey';
|
||||||
import { cardPubKeys } from './pubkeys';
|
import { cardPubKeys } from './pubkeys';
|
||||||
|
import { findAllJubmojiNullifiers } from '../../data/db';
|
||||||
|
|
||||||
export async function jubmojiVerifier(serializedMembershipProof): Promise<VerificationResult> {
|
export async function jubmojiVerifier(serializedMembershipProof): Promise<VerificationResult> {
|
||||||
const merkleRoot = await getMerkleRootFromCache(collectionPubKeys);
|
const merkleRoot = await getMerkleRootFromCache(collectionPubKeys);
|
||||||
@@ -61,9 +62,12 @@ const verifyMembership = async ({
|
|||||||
return { verified: false };
|
return { verified: false };
|
||||||
}
|
}
|
||||||
// TODO! This is where we need to check and make sure someone can't join more than once
|
// 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);
|
const verified = await verifyMembershipZKP(vkey, proof.zkp);
|
||||||
if (!verified) {
|
if (!verified) {
|
||||||
return { verified: false };
|
return { verified: false };
|
||||||
|
|||||||
@@ -67,3 +67,7 @@ export interface addRoomData {
|
|||||||
admin?: boolean;
|
admin?: boolean;
|
||||||
discordIds?: string[];
|
discordIds?: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Jubmojis {
|
||||||
|
jubmoji: any[];
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user