mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00: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:
		| @@ -479,6 +479,8 @@ var migrations = []Migration{ | |||||||
| 	NewMigration("Improve Action table indices v3", v1_20.ImproveActionTableIndices), | 	NewMigration("Improve Action table indices v3", v1_20.ImproveActionTableIndices), | ||||||
| 	// v250 -> v251 | 	// v250 -> v251 | ||||||
| 	NewMigration("Change Container Metadata", v1_20.ChangeContainerMetadataMultiArch), | 	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 | // 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() | ||||||
|  | } | ||||||
| @@ -341,6 +341,7 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) { | |||||||
| 			OrgID:      org.ID, | 			OrgID:      org.ID, | ||||||
| 			TeamID:     t.ID, | 			TeamID:     t.ID, | ||||||
| 			Type:       tp, | 			Type:       tp, | ||||||
|  | 			AccessMode: perm.AccessModeOwner, | ||||||
| 		}) | 		}) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 yp05327
					yp05327