forked from go-gitea/gitea
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add fix incorrect can_create_org_repo for org owner team (go-gitea#26683
) Related to: go-gitea#8312 go-gitea#26491 In migration v109, we only added a new column `CanCreateOrgRepo` in Team table, but not initial the value of it. This may cause bug like go-gitea#26491. --------- Co-authored-by: wxiaoguang <[email protected]>
- Loading branch information
Showing
1 changed file
with
61 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
// Copyright 2023 The Gitea Authors. All rights reserved. | ||
// SPDX-License-Identifier: MIT | ||
|
||
package doctor | ||
|
||
import ( | ||
"context" | ||
|
||
"code.gitea.io/gitea/models" | ||
"code.gitea.io/gitea/models/db" | ||
org_model "code.gitea.io/gitea/models/organization" | ||
"code.gitea.io/gitea/models/perm" | ||
"code.gitea.io/gitea/modules/log" | ||
|
||
"xorm.io/builder" | ||
) | ||
|
||
func fixOwnerTeamCreateOrgRepo(ctx context.Context, logger log.Logger, autofix bool) error { | ||
count := 0 | ||
|
||
err := db.Iterate( | ||
ctx, | ||
builder.Eq{"authorize": perm.AccessModeOwner, "can_create_org_repo": false}, | ||
func(ctx context.Context, team *org_model.Team) error { | ||
team.CanCreateOrgRepo = true | ||
count++ | ||
|
||
if !autofix { | ||
return nil | ||
} | ||
|
||
return models.UpdateTeam(team, false, false) | ||
}, | ||
) | ||
if err != nil { | ||
logger.Critical("Unable to iterate across repounits to fix incorrect can_create_org_repo: Error %v", err) | ||
return err | ||
} | ||
|
||
if !autofix { | ||
if count == 0 { | ||
logger.Info("Found no team with incorrect can_create_org_repo") | ||
} else { | ||
logger.Warn("Found %d teams with incorrect can_create_org_repo", count) | ||
} | ||
return nil | ||
} | ||
logger.Info("Fixed %d teams with incorrect can_create_org_repo", count) | ||
|
||
return nil | ||
} | ||
|
||
func init() { | ||
Register(&Check{ | ||
Title: "Check for incorrect can_create_org_repo for org owner teams", | ||
Name: "fix-owner-team-create-org-repo", | ||
IsDefault: false, | ||
Run: fixOwnerTeamCreateOrgRepo, | ||
Priority: 7, | ||
}) | ||
} |