mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	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>
This commit is contained in:
		
							
								
								
									
										61
									
								
								modules/doctor/fix8312.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								modules/doctor/fix8312.go
									
									
									
									
									
										Normal file
									
								
							@@ -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,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user