diff --git a/server/api/repo.go b/server/api/repo.go index ed1e0ed11..2f382e6dc 100644 --- a/server/api/repo.go +++ b/server/api/repo.go @@ -130,7 +130,7 @@ func PostRepo(c *gin.Context) { if errors.Is(err, types.RecordNotExist) { org, err = _forge.Org(c, user, repo.Owner) if err != nil { - msg := "could not fetch organization from forge." + msg := fmt.Sprintf("Organization %s not found in DB. Attempting to create new one.", repo.Owner) log.Error().Err(err).Msg(msg) c.String(http.StatusInternalServerError, msg) return @@ -139,7 +139,7 @@ func PostRepo(c *gin.Context) { org.ForgeID = user.ForgeID err = _store.OrgCreate(org) if err != nil { - msg := "could not create organization in store." + msg := fmt.Sprintf("Failed to create organization %s.", repo.Owner) log.Error().Err(err).Msg(msg) c.String(http.StatusInternalServerError, msg) return diff --git a/server/forge/gitlab/gitlab.go b/server/forge/gitlab/gitlab.go index 1929aef66..a6af27bed 100644 --- a/server/forge/gitlab/gitlab.go +++ b/server/forge/gitlab/gitlab.go @@ -753,7 +753,7 @@ func (g *GitLab) Org(ctx context.Context, u *model.User, owner string) (*model.O groups, _, err := client.Groups.ListGroups(&gitlab.ListGroupsOptions{ ListOptions: gitlab.ListOptions{ Page: 1, - PerPage: 1, + PerPage: perPage, }, Search: gitlab.Ptr(owner), }, gitlab.WithContext(ctx)) @@ -761,13 +761,21 @@ func (g *GitLab) Org(ctx context.Context, u *model.User, owner string) (*model.O return nil, err } - if len(groups) != 1 { + var matchedGroup *gitlab.Group + for _, group := range groups { + if group.FullPath == owner { + matchedGroup = group + break + } + } + + if matchedGroup == nil { return nil, fmt.Errorf("could not find org %s", owner) } return &model.Org{ - Name: groups[0].FullPath, - Private: groups[0].Visibility != gitlab.PublicVisibility, + Name: matchedGroup.FullPath, + Private: matchedGroup.Visibility != gitlab.PublicVisibility, }, nil }