forked from 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>
This commit is contained in:
		
							parent
							
								
									aeeeac8edf
								
							
						
					
					
						commit
						60ca3d04a4
					
				
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 yp05327
						yp05327