@@ -38,8 +38,10 @@ export interface ReferenceSigningResult {
3838 type : "signed" | "security_violation" ;
3939}
4040
41+ // Module-level singleton session storage - shared across all service instances
42+ const sessionStorage : Map < string , ReferenceSigningSession > = new Map ( ) ;
43+
4144export class ReferenceSigningSessionService {
42- private sessions : Map < string , ReferenceSigningSession > = new Map ( ) ;
4345 private signatureService = new ReferenceSignatureService ( ) ;
4446
4547 async createSession ( referenceId : string , referenceData : any , userId : string ) : Promise < ReferenceSigningSession > {
@@ -55,7 +57,7 @@ export class ReferenceSigningSessionService {
5557 } ) ;
5658
5759 const base64Data = Buffer . from ( messageData ) . toString ( 'base64' ) ;
58- const apiBaseUrl = process . env . PUBLIC_EREPUTATION_BASE_URL || "http://localhost:8765" ;
60+ const apiBaseUrl = process . env . VITE_EREPUTATION_BASE_URL ;
5961 const redirectUri = `${ apiBaseUrl } /api/references/signing/callback` ;
6062
6163 const qrData = `w3ds://sign?session=${ sessionId } &data=${ base64Data } &redirect_uri=${ encodeURIComponent ( redirectUri ) } ` ;
@@ -71,23 +73,23 @@ export class ReferenceSigningSessionService {
7173 status : "pending"
7274 } ;
7375
74- this . sessions . set ( sessionId , session ) ;
75- console . log ( `Created reference signing session ${ sessionId } , total sessions: ${ this . sessions . size } ` ) ;
76+ sessionStorage . set ( sessionId , session ) ;
77+ console . log ( `Created reference signing session ${ sessionId } , total sessions: ${ sessionStorage . size } ` ) ;
7678
7779 // Set up expiration cleanup
7880 setTimeout ( ( ) => {
79- const session = this . sessions . get ( sessionId ) ;
81+ const session = sessionStorage . get ( sessionId ) ;
8082 if ( session && session . status === "pending" ) {
8183 session . status = "expired" ;
82- this . sessions . set ( sessionId , session ) ;
84+ sessionStorage . set ( sessionId , session ) ;
8385 }
8486 } , 15 * 60 * 1000 ) ;
8587
8688 return session ;
8789 }
8890
8991 async getSession ( sessionId : string ) : Promise < ReferenceSigningSession | null > {
90- const session = this . sessions . get ( sessionId ) ;
92+ const session = sessionStorage . get ( sessionId ) ;
9193
9294 if ( ! session ) {
9395 return null ;
@@ -96,18 +98,21 @@ export class ReferenceSigningSessionService {
9698 // Check if session has expired
9799 if ( session . status === "pending" && new Date ( ) > session . expiresAt ) {
98100 session . status = "expired" ;
99- this . sessions . set ( sessionId , session ) ;
101+ sessionStorage . set ( sessionId , session ) ;
100102 }
101103
102104 return session ;
103105 }
104106
105107 async processSignedPayload ( sessionId : string , signature : string , publicKey : string , message : string ) : Promise < ReferenceSigningResult > {
106108 console . log ( `Processing signed payload for reference session: ${ sessionId } ` ) ;
109+ console . log ( `Current session storage size: ${ sessionStorage . size } ` ) ;
110+ console . log ( `Session IDs in storage:` , Array . from ( sessionStorage . keys ( ) ) ) ;
107111
108112 const session = await this . getSession ( sessionId ) ;
109113
110114 if ( ! session ) {
115+ console . error ( `Session ${ sessionId } not found in storage. Available sessions:` , Array . from ( sessionStorage . keys ( ) ) ) ;
111116 throw new Error ( "Session not found" ) ;
112117 }
113118
@@ -145,7 +150,7 @@ export class ReferenceSigningSessionService {
145150
146151 // Update session status to indicate security violation
147152 session . status = "security_violation" ;
148- this . sessions . set ( sessionId , session ) ;
153+ sessionStorage . set ( sessionId , session ) ;
149154
150155 // Return error result instead of throwing
151156 return {
@@ -184,7 +189,7 @@ export class ReferenceSigningSessionService {
184189
185190 // Update session status
186191 session . status = "completed" ;
187- this . sessions . set ( sessionId , session ) ;
192+ sessionStorage . set ( sessionId , session ) ;
188193
189194 const result : ReferenceSigningResult = {
190195 success : true ,
0 commit comments