mirror of https://github.com/go-gitea/gitea
Add fix incorrect can_create_org_repo for org owner team (#26683)
Related to: #8312 #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 #26491. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>pull/26738/head^2
parent
aeeeac8edf
commit
60ca3d04a4
@ -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, |
||||
}) |
||||
} |
Loading…
Reference in new issue