mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	Backport #26683 by @yp05327
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: yp05327 <576951401@qq.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit c3d323fd85)
	
	
This commit is contained in:
		
					parent
					
						
							
								4d2b4008d3
							
						
					
				
			
			
				commit
				
					
						0b1175f21b
					
				
			
		
					 1 changed files with 61 additions and 0 deletions
				
			
		
							
								
								
									
										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, | ||||
| 	}) | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue