diff --git a/pkg/accessreview/campaign_service.go b/pkg/accessreview/campaign_service.go index e4a36748a..45ac9be3a 100644 --- a/pkg/accessreview/campaign_service.go +++ b/pkg/accessreview/campaign_service.go @@ -22,6 +22,7 @@ package accessreview import ( "context" + "errors" "fmt" "time" @@ -61,15 +62,15 @@ func (s *Service) CreateCampaign( for _, sourceID := range req.AccessReviewSourceIDs { source := &coredata.AccessReviewSource{} if err := source.LoadByID(ctx, conn, scope, sourceID); err != nil { - return fmt.Errorf("cannot load access source %s: %w", sourceID, err) + if errors.Is(err, coredata.ErrResourceNotFound) { + return coredata.ErrResourceNotFound + } + + return fmt.Errorf("cannot load access source: %w", err) } if source.OrganizationID != campaign.OrganizationID { - return fmt.Errorf( - "cannot create campaign: access source %s does not belong to the same organization: %w", - sourceID, - ErrCampaignSourceOrganizationMismatch, - ) + return coredata.ErrResourceNotFound } if err := s.upsertCampaignSource(ctx, conn, scope, campaign.ID, source); err != nil { @@ -256,15 +257,15 @@ func (s *Service) AddCampaignSource( source := &coredata.AccessReviewSource{} if err := source.LoadByID(ctx, conn, scope, req.AccessReviewSourceID); err != nil { - return fmt.Errorf("cannot load access source %s: %w", req.AccessReviewSourceID, err) + if errors.Is(err, coredata.ErrResourceNotFound) { + return coredata.ErrResourceNotFound + } + + return fmt.Errorf("cannot load access source: %w", err) } if source.OrganizationID != campaign.OrganizationID { - return fmt.Errorf( - "cannot add scope source: access source %q does not belong to the same organization: %w", - req.AccessReviewSourceID, - ErrCampaignSourceOrganizationMismatch, - ) + return coredata.ErrResourceNotFound } if err := s.upsertCampaignSource(ctx, conn, scope, campaign.ID, source); err != nil { @@ -349,15 +350,15 @@ func (s *Service) syncCampaignSources( source := &coredata.AccessReviewSource{} if err := source.LoadByID(ctx, conn, scope, sourceID); err != nil { - return fmt.Errorf("cannot load access source %s: %w", sourceID, err) + if errors.Is(err, coredata.ErrResourceNotFound) { + return coredata.ErrResourceNotFound + } + + return fmt.Errorf("cannot load access source: %w", err) } if source.OrganizationID != campaign.OrganizationID { - return fmt.Errorf( - "cannot update campaign: access source %s does not belong to the same organization: %w", - sourceID, - ErrCampaignSourceOrganizationMismatch, - ) + return coredata.ErrResourceNotFound } if err := s.upsertCampaignSource(ctx, conn, scope, campaign.ID, source); err != nil { diff --git a/pkg/accessreview/errors.go b/pkg/accessreview/errors.go index f5eb3d911..af199571e 100644 --- a/pkg/accessreview/errors.go +++ b/pkg/accessreview/errors.go @@ -23,7 +23,6 @@ package accessreview import "errors" var ( - ErrCampaignNoSourcesSelected = errors.New("cannot start campaign: no scope sources configured") - ErrCampaignNotDraft = errors.New("campaign must be in draft status") - ErrCampaignSourceOrganizationMismatch = errors.New("access source does not belong to the same organization") + ErrCampaignNoSourcesSelected = errors.New("cannot start campaign: no scope sources configured") + ErrCampaignNotDraft = errors.New("campaign must be in draft status") ) diff --git a/pkg/server/api/console/v1/access_review_campaign_resolvers.go b/pkg/server/api/console/v1/access_review_campaign_resolvers.go index e451cafc8..87f10eec3 100644 --- a/pkg/server/api/console/v1/access_review_campaign_resolvers.go +++ b/pkg/server/api/console/v1/access_review_campaign_resolvers.go @@ -724,8 +724,8 @@ func (r *mutationResolver) CreateAccessReviewCampaign(ctx context.Context, input }, ) if err != nil { - if errors.Is(err, accessreview.ErrCampaignSourceOrganizationMismatch) { - return nil, gqlutils.Invalid(ctx, err) + if errors.Is(err, coredata.ErrResourceNotFound) { + return nil, gqlutils.NotFound(ctx, err) } r.logger.ErrorCtx(ctx, "cannot create access review campaign", log.Error(err)) @@ -760,8 +760,7 @@ func (r *mutationResolver) UpdateAccessReviewCampaign(ctx context.Context, input return nil, gqlutils.NotFound(ctx, err) } - if errors.Is(err, accessreview.ErrCampaignNotDraft) || - errors.Is(err, accessreview.ErrCampaignSourceOrganizationMismatch) { + if errors.Is(err, accessreview.ErrCampaignNotDraft) { return nil, gqlutils.Invalid(ctx, err) } @@ -875,6 +874,10 @@ func (r *mutationResolver) AddAccessReviewCampaignSource(ctx context.Context, in }, ) if err != nil { + if errors.Is(err, coredata.ErrResourceNotFound) { + return nil, gqlutils.NotFound(ctx, err) + } + r.logger.ErrorCtx(ctx, "cannot add scope source to access review campaign", log.Error(err)) return nil, gqlutils.Internal(ctx)