diff --git a/backend/internal/handler/user_handler.go b/backend/internal/handler/user_handler.go index 87a911d5..8502e096 100644 --- a/backend/internal/handler/user_handler.go +++ b/backend/internal/handler/user_handler.go @@ -1556,6 +1556,22 @@ func (h *UserHandler) UpdateUser(c *fiber.Ctx) error { } existingCodes = newCodes + // [Keto Sync] Remove membership for the target tenant + if h.TenantService != nil && h.KetoOutboxRepo != nil && code != "" { + go func(removedSlug string) { + bgCtx := context.Background() + if t, err := h.TenantService.GetTenantBySlug(bgCtx, removedSlug); err == nil && t != nil { + _ = h.KetoOutboxRepo.Create(bgCtx, &domain.KetoOutbox{ + Namespace: "Tenant", + Object: t.ID, + Relation: "members", + Subject: "User:" + userID, + Action: domain.KetoOutboxActionDelete, + }) + } + }(code) + } + // If removing the primary company code, pick another one as primary if available currentPrimary := extractTraitString(traits, "companyCode") if currentPrimary == code {