From 6de545fcb9fe7a96ef9f9628617da0c1a3e6cc43 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 29 Dec 2025 13:35:05 -0800 Subject: [PATCH] fix(session-coordinator): generate wildcard token for co_managed_keygen external participants --- .../application/use_cases/create_session.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go b/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go index b11d5c7f..26c87eab 100644 --- a/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go +++ b/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go @@ -257,6 +257,19 @@ func (uc *CreateSessionUseCase) Execute( if len(offlineParties) > 0 && uc.notificationService != nil { uc.sendNotificationsToOfflineParties(ctx, session, offlineParties, tokens) } + + // For co_managed_keygen sessions, also generate a wildcard token + // for external participants who will join dynamically via invite code + if sessionType == entities.SessionTypeCoManagedKeygen && req.PartyComposition != nil && req.PartyComposition.TemporaryCount > 0 { + wildcardToken, err := uc.tokenGen.GenerateJoinToken(session.ID.UUID(), "*", expiresIn) + if err != nil { + return nil, err + } + tokens["*"] = wildcardToken + logger.Info("generated wildcard token for external participants", + zap.String("session_id", session.ID.String()), + zap.Int("external_count", req.PartyComposition.TemporaryCount)) + } } } else { // No party pool configured - fallback to dynamic join