From 08f0a2e543ad0bb9c012fcfc158ff76da6beb4b0 Mon Sep 17 00:00:00 2001 From: Merul Dhiman Date: Fri, 21 Nov 2025 20:43:00 +0530 Subject: [PATCH 1/5] fix: ereputation signing session logic --- .../ReferenceSigningSessionService.ts | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/platforms/eReputation-api/src/services/ReferenceSigningSessionService.ts b/platforms/eReputation-api/src/services/ReferenceSigningSessionService.ts index 5dc29ddf..275ff215 100644 --- a/platforms/eReputation-api/src/services/ReferenceSigningSessionService.ts +++ b/platforms/eReputation-api/src/services/ReferenceSigningSessionService.ts @@ -38,8 +38,10 @@ export interface ReferenceSigningResult { type: "signed" | "security_violation"; } +// Module-level singleton session storage - shared across all service instances +const sessionStorage: Map = new Map(); + export class ReferenceSigningSessionService { - private sessions: Map = new Map(); private signatureService = new ReferenceSignatureService(); async createSession(referenceId: string, referenceData: any, userId: string): Promise { @@ -55,7 +57,7 @@ export class ReferenceSigningSessionService { }); const base64Data = Buffer.from(messageData).toString('base64'); - const apiBaseUrl = process.env.PUBLIC_EREPUTATION_BASE_URL || "http://localhost:8765"; + const apiBaseUrl = process.env.VITE_EREPUTATION_BASE_URL; const redirectUri = `${apiBaseUrl}/api/references/signing/callback`; const qrData = `w3ds://sign?session=${sessionId}&data=${base64Data}&redirect_uri=${encodeURIComponent(redirectUri)}`; @@ -71,15 +73,15 @@ export class ReferenceSigningSessionService { status: "pending" }; - this.sessions.set(sessionId, session); - console.log(`Created reference signing session ${sessionId}, total sessions: ${this.sessions.size}`); + sessionStorage.set(sessionId, session); + console.log(`Created reference signing session ${sessionId}, total sessions: ${sessionStorage.size}`); // Set up expiration cleanup setTimeout(() => { - const session = this.sessions.get(sessionId); + const session = sessionStorage.get(sessionId); if (session && session.status === "pending") { session.status = "expired"; - this.sessions.set(sessionId, session); + sessionStorage.set(sessionId, session); } }, 15 * 60 * 1000); @@ -87,7 +89,7 @@ export class ReferenceSigningSessionService { } async getSession(sessionId: string): Promise { - const session = this.sessions.get(sessionId); + const session = sessionStorage.get(sessionId); if (!session) { return null; @@ -96,7 +98,7 @@ export class ReferenceSigningSessionService { // Check if session has expired if (session.status === "pending" && new Date() > session.expiresAt) { session.status = "expired"; - this.sessions.set(sessionId, session); + sessionStorage.set(sessionId, session); } return session; @@ -104,10 +106,13 @@ export class ReferenceSigningSessionService { async processSignedPayload(sessionId: string, signature: string, publicKey: string, message: string): Promise { console.log(`Processing signed payload for reference session: ${sessionId}`); + console.log(`Current session storage size: ${sessionStorage.size}`); + console.log(`Session IDs in storage:`, Array.from(sessionStorage.keys())); const session = await this.getSession(sessionId); if (!session) { + console.error(`Session ${sessionId} not found in storage. Available sessions:`, Array.from(sessionStorage.keys())); throw new Error("Session not found"); } @@ -145,7 +150,7 @@ export class ReferenceSigningSessionService { // Update session status to indicate security violation session.status = "security_violation"; - this.sessions.set(sessionId, session); + sessionStorage.set(sessionId, session); // Return error result instead of throwing return { @@ -184,7 +189,7 @@ export class ReferenceSigningSessionService { // Update session status session.status = "completed"; - this.sessions.set(sessionId, session); + sessionStorage.set(sessionId, session); const result: ReferenceSigningResult = { success: true, From 1b3bfaa88cea68587a8bca890d5997ad20c9ccd9 Mon Sep 17 00:00:00 2001 From: Merul Dhiman Date: Fri, 21 Nov 2025 20:53:55 +0530 Subject: [PATCH 2/5] chore: fix wishlist prompt and UI for search --- .../src/services/CalculationService.ts | 2 +- .../src/components/modals/reference-modal.tsx | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/platforms/eReputation-api/src/services/CalculationService.ts b/platforms/eReputation-api/src/services/CalculationService.ts index 94ef1a9a..54e7e2ce 100644 --- a/platforms/eReputation-api/src/services/CalculationService.ts +++ b/platforms/eReputation-api/src/services/CalculationService.ts @@ -155,7 +155,7 @@ export class CalculationService { private buildPrompt(userValues: string, references: any[], targetName: string): string { return ` -You are analyzing the reputation of "${targetName}" based on the following user values and references. +You are analyzing the reputation of "${targetName}" based on the following user values and references. Remember that the user may also supply a wishlist, only focus on the part of the wishlist and values which mentions what the user values in a person, group, or platform, depending on what type of profile it is that you are evaluating, do not care about anything else in the wishlist. USER VALUES (what the evaluator cares about): ${userValues} diff --git a/platforms/eReputation/client/src/components/modals/reference-modal.tsx b/platforms/eReputation/client/src/components/modals/reference-modal.tsx index 0aad32a1..e7897d85 100644 --- a/platforms/eReputation/client/src/components/modals/reference-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/reference-modal.tsx @@ -516,9 +516,17 @@ export default function ReferenceModal({ open, onOpenChange }: ReferenceModalPro )} -
-
{result.name || result.ename || result.handle || 'Unknown'}
-
{result.type || result.category || targetType}
+
+
+ {result.name || result.ename || result.handle || 'Unknown'} +
+
+ {targetType === 'user' && result.ename ? ( + result.ename + ) : ( + {result.type || result.category || targetType} + )} +
@@ -536,11 +544,13 @@ export default function ReferenceModal({ open, onOpenChange }: ReferenceModalPro {selectedTarget && (
-
- +
+ - {selectedTarget.name || selectedTarget.ename || selectedTarget.handle || 'Unknown'} + + {selectedTarget.name || selectedTarget.ename || selectedTarget.handle || 'Unknown'} +
-
-
{result.name || result.ename || result.handle || 'Unknown'}
-
{result.type || result.category || targetType}
+
+
{result.name || result.ename || result.handle || 'Unknown'}
+
+ {(targetType === 'user' || targetType === 'group') ? ( + result.ename ? result.ename : 'no ename' + ) : ( + {result.type || result.category || targetType} + )} +
diff --git a/platforms/eReputation/client/src/components/modals/reference-modal.tsx b/platforms/eReputation/client/src/components/modals/reference-modal.tsx index e7897d85..8a965abb 100644 --- a/platforms/eReputation/client/src/components/modals/reference-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/reference-modal.tsx @@ -521,8 +521,8 @@ export default function ReferenceModal({ open, onOpenChange }: ReferenceModalPro {result.name || result.ename || result.handle || 'Unknown'}
- {targetType === 'user' && result.ename ? ( - result.ename + {(targetType === 'user' || targetType === 'group') ? ( + result.ename ? result.ename : 'no ename' ) : ( {result.type || result.category || targetType} )} From 54353562ad0d75ec2305155f245c0e874eaaff46 Mon Sep 17 00:00:00 2001 From: Merul Dhiman Date: Fri, 21 Nov 2025 20:59:18 +0530 Subject: [PATCH 4/5] feat: enforce `@` prefix on ename display --- .../client/src/components/modals/other-calculation-modal.tsx | 2 +- .../client/src/components/modals/reference-modal.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx b/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx index 8ae0bc10..48f9b7a5 100644 --- a/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx @@ -478,7 +478,7 @@ export default function OtherCalculationModal({ open, onOpenChange }: OtherCalcu
{result.name || result.ename || result.handle || 'Unknown'}
{(targetType === 'user' || targetType === 'group') ? ( - result.ename ? result.ename : 'no ename' + result.ename ? (result.ename.startsWith('@') ? result.ename : `@${result.ename}`) : 'no ename' ) : ( {result.type || result.category || targetType} )} diff --git a/platforms/eReputation/client/src/components/modals/reference-modal.tsx b/platforms/eReputation/client/src/components/modals/reference-modal.tsx index 8a965abb..271408ff 100644 --- a/platforms/eReputation/client/src/components/modals/reference-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/reference-modal.tsx @@ -522,7 +522,7 @@ export default function ReferenceModal({ open, onOpenChange }: ReferenceModalPro
{(targetType === 'user' || targetType === 'group') ? ( - result.ename ? result.ename : 'no ename' + result.ename ? (result.ename.startsWith('@') ? result.ename : `@${result.ename}`) : 'no ename' ) : ( {result.type || result.category || targetType} )} From 72c270ae05c4e22b287369a12bf350c4c3b91a23 Mon Sep 17 00:00:00 2001 From: Merul Dhiman Date: Fri, 21 Nov 2025 21:04:53 +0530 Subject: [PATCH 5/5] fix: ename display --- .../client/src/components/modals/other-calculation-modal.tsx | 2 +- .../client/src/components/modals/reference-modal.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx b/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx index 48f9b7a5..0a7d2794 100644 --- a/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx @@ -477,7 +477,7 @@ export default function OtherCalculationModal({ open, onOpenChange }: OtherCalcu
{result.name || result.ename || result.handle || 'Unknown'}
- {(targetType === 'user' || targetType === 'group') ? ( + {targetType === 'user' ? ( result.ename ? (result.ename.startsWith('@') ? result.ename : `@${result.ename}`) : 'no ename' ) : ( {result.type || result.category || targetType} diff --git a/platforms/eReputation/client/src/components/modals/reference-modal.tsx b/platforms/eReputation/client/src/components/modals/reference-modal.tsx index 271408ff..532a97e2 100644 --- a/platforms/eReputation/client/src/components/modals/reference-modal.tsx +++ b/platforms/eReputation/client/src/components/modals/reference-modal.tsx @@ -521,7 +521,7 @@ export default function ReferenceModal({ open, onOpenChange }: ReferenceModalPro {result.name || result.ename || result.handle || 'Unknown'}
- {(targetType === 'user' || targetType === 'group') ? ( + {targetType === 'user' ? ( result.ename ? (result.ename.startsWith('@') ? result.ename : `@${result.ename}`) : 'no ename' ) : ( {result.type || result.category || targetType}