From f03b80f9d7f2529d8cef23ca6a742a914a4ec883 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sun, 25 May 2025 22:24:20 +0200 Subject: [PATCH] fix: run user group count inside a transaction --- backend/internal/service/oidc_service.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/internal/service/oidc_service.go b/backend/internal/service/oidc_service.go index 30d82fd4..e2cc363a 100644 --- a/backend/internal/service/oidc_service.go +++ b/backend/internal/service/oidc_service.go @@ -1175,13 +1175,19 @@ func (s *OidcService) GetDeviceCodeInfo(ctx context.Context, userCode string, us } func (s *OidcService) GetAllowedGroupsCountOfClient(ctx context.Context, id string) (int64, error) { + // We only perform select queries here, so we can rollback in all cases + tx := s.db.Begin() + defer func() { + tx.Rollback() + }() + var client model.OidcClient - err := s.db.WithContext(ctx).Where("id = ?", id).First(&client).Error + err := tx.WithContext(ctx).Where("id = ?", id).First(&client).Error if err != nil { return 0, err } - count := s.db.WithContext(ctx).Model(&client).Association("AllowedUserGroups").Count() + count := tx.WithContext(ctx).Model(&client).Association("AllowedUserGroups").Count() return count, nil }