mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 00:54:43 +01:00 
			
		
		
		
	Fix owner team access mode value in team_unit table (#23675)
All `access_mode` value of Owner Teams are 0(AccessModeNone) in `team_unit` table, which should be 4(AccessModeOwner) In `team` table:  In `team_unit` table:  ps: In https://github.com/go-gitea/gitea/pull/23630, `access_mode` in `team_unit` is used to check the team unit permission, but I found that user can not see issues in owned org repos.
This commit is contained in:
		
							parent
							
								
									29133f3d04
								
							
						
					
					
						commit
						6eb856c614
					
				| @ -479,6 +479,8 @@ var migrations = []Migration{ | ||||
| 	NewMigration("Improve Action table indices v3", v1_20.ImproveActionTableIndices), | ||||
| 	// v250 -> v251 | ||||
| 	NewMigration("Change Container Metadata", v1_20.ChangeContainerMetadataMultiArch), | ||||
| 	// v251 -> v252 | ||||
| 	NewMigration("Fix incorrect owner team unit access mode", v1_20.FixIncorrectOwnerTeamUnitAccessMode), | ||||
| } | ||||
| 
 | ||||
| // GetCurrentDBVersion returns the current db version | ||||
|  | ||||
							
								
								
									
										47
									
								
								models/migrations/v1_20/v251.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								models/migrations/v1_20/v251.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| // Copyright 2023 The Gitea Authors. All rights reserved. | ||||
| // SPDX-License-Identifier: MIT | ||||
| 
 | ||||
| package v1_20 //nolint | ||||
| 
 | ||||
| import ( | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 
 | ||||
| 	"xorm.io/xorm" | ||||
| ) | ||||
| 
 | ||||
| func FixIncorrectOwnerTeamUnitAccessMode(x *xorm.Engine) error { | ||||
| 	type UnitType int | ||||
| 	type AccessMode int | ||||
| 
 | ||||
| 	type TeamUnit struct { | ||||
| 		ID         int64    `xorm:"pk autoincr"` | ||||
| 		OrgID      int64    `xorm:"INDEX"` | ||||
| 		TeamID     int64    `xorm:"UNIQUE(s)"` | ||||
| 		Type       UnitType `xorm:"UNIQUE(s)"` | ||||
| 		AccessMode AccessMode | ||||
| 	} | ||||
| 
 | ||||
| 	const ( | ||||
| 		// AccessModeOwner owner access | ||||
| 		AccessModeOwner = 4 | ||||
| 	) | ||||
| 
 | ||||
| 	sess := x.NewSession() | ||||
| 	defer sess.Close() | ||||
| 
 | ||||
| 	if err := sess.Begin(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	count, err := sess.Table("team_unit"). | ||||
| 		Where("team_id IN (SELECT id FROM team WHERE authorize = ?)", AccessModeOwner). | ||||
| 		Update(&TeamUnit{ | ||||
| 			AccessMode: AccessModeOwner, | ||||
| 		}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	log.Debug("Updated %d owner team unit access mode to belong to owner instead of none", count) | ||||
| 
 | ||||
| 	return sess.Commit() | ||||
| } | ||||
| @ -338,9 +338,10 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) { | ||||
| 	units := make([]TeamUnit, 0, len(unit.AllRepoUnitTypes)) | ||||
| 	for _, tp := range unit.AllRepoUnitTypes { | ||||
| 		units = append(units, TeamUnit{ | ||||
| 			OrgID:  org.ID, | ||||
| 			TeamID: t.ID, | ||||
| 			Type:   tp, | ||||
| 			OrgID:      org.ID, | ||||
| 			TeamID:     t.ID, | ||||
| 			Type:       tp, | ||||
| 			AccessMode: perm.AccessModeOwner, | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user