code.gitea.io/gitea@v1.22.3/services/doctor/fix8312.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package doctor 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models" 10 "code.gitea.io/gitea/models/db" 11 org_model "code.gitea.io/gitea/models/organization" 12 "code.gitea.io/gitea/models/perm" 13 "code.gitea.io/gitea/modules/log" 14 15 "xorm.io/builder" 16 ) 17 18 func fixOwnerTeamCreateOrgRepo(ctx context.Context, logger log.Logger, autofix bool) error { 19 count := 0 20 21 err := db.Iterate( 22 ctx, 23 builder.Eq{"authorize": perm.AccessModeOwner, "can_create_org_repo": false}, 24 func(ctx context.Context, team *org_model.Team) error { 25 team.CanCreateOrgRepo = true 26 count++ 27 28 if !autofix { 29 return nil 30 } 31 32 return models.UpdateTeam(ctx, team, false, false) 33 }, 34 ) 35 if err != nil { 36 logger.Critical("Unable to iterate across repounits to fix incorrect can_create_org_repo: Error %v", err) 37 return err 38 } 39 40 if !autofix { 41 if count == 0 { 42 logger.Info("Found no team with incorrect can_create_org_repo") 43 } else { 44 logger.Warn("Found %d teams with incorrect can_create_org_repo", count) 45 } 46 return nil 47 } 48 logger.Info("Fixed %d teams with incorrect can_create_org_repo", count) 49 50 return nil 51 } 52 53 func init() { 54 Register(&Check{ 55 Title: "Check for incorrect can_create_org_repo for org owner teams", 56 Name: "fix-owner-team-create-org-repo", 57 IsDefault: false, 58 Run: fixOwnerTeamCreateOrgRepo, 59 Priority: 7, 60 }) 61 }