From 970a73496401689e53afefc4b64d27ffdd052445 Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Thu, 18 Dec 2025 18:24:06 +0100 Subject: [PATCH] Fix active session must not be return if expired Signed-off-by: Bryan Frimin --- pkg/iam/session_service.go | 8 ++++++++ pkg/server/api/connect/v1/v1_resolver.go | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/iam/session_service.go b/pkg/iam/session_service.go index 312145894..121ff05ee 100644 --- a/pkg/iam/session_service.go +++ b/pkg/iam/session_service.go @@ -300,6 +300,14 @@ func (s SessionService) GetActiveSessionForMembership(ctx context.Context, rootS return fmt.Errorf("cannot load child session: %w", err) } + if childSession.ExpireReason != nil { + return NewSessionExpiredError(childSession.ID) + } + + if time.Now().After(childSession.ExpiredAt) { + return NewSessionExpiredError(childSession.ID) + } + return nil }, ) diff --git a/pkg/server/api/connect/v1/v1_resolver.go b/pkg/server/api/connect/v1/v1_resolver.go index 816a46809..0ceca4aec 100644 --- a/pkg/server/api/connect/v1/v1_resolver.go +++ b/pkg/server/api/connect/v1/v1_resolver.go @@ -144,9 +144,12 @@ func (r *membershipResolver) ActiveSession(ctx context.Context, obj *types.Membe session, err := r.iam.SessionService.GetActiveSessionForMembership(ctx, rootSession.UserID, obj.ID) if err != nil { - var errSessionNotFound *iam.ErrSessionNotFound + var ( + errSessionNotFound *iam.ErrSessionNotFound + errSessionExpired *iam.ErrSessionExpired + ) - if errors.As(err, &errSessionNotFound) { + if errors.As(err, &errSessionNotFound) || errors.As(err, &errSessionExpired) { return nil, nil }