mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Use db.WithTx for AddTeamMember to avoid ctx abuse (#27095)
Compare with ignoring spaces: https://github.com/go-gitea/gitea/pull/27095/files?diff=split&w=1
This commit is contained in:
		@@ -366,12 +366,7 @@ func AddTeamMember(ctx context.Context, team *organization.Team, userID int64) e
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx, committer, err := db.TxContext(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer committer.Close()
 | 
			
		||||
 | 
			
		||||
	err = db.WithTx(ctx, func(ctx context.Context) error {
 | 
			
		||||
		// check in transaction
 | 
			
		||||
		isAlreadyMember, err = organization.IsTeamMember(ctx, team.OrgID, team.ID, userID)
 | 
			
		||||
		if err != nil || isAlreadyMember {
 | 
			
		||||
@@ -422,13 +417,18 @@ func AddTeamMember(ctx context.Context, team *organization.Team, userID int64) e
 | 
			
		||||
				accesses = accesses[:0]
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// this behaviour may spend much time so run it in a goroutine
 | 
			
		||||
	// FIXME: Update watch repos batchly
 | 
			
		||||
	if setting.Service.AutoWatchNewRepos {
 | 
			
		||||
		// Get team and its repositories.
 | 
			
		||||
		if err := team.LoadRepositories(ctx); err != nil {
 | 
			
		||||
			log.Error("getRepositories failed: %v", err)
 | 
			
		||||
			log.Error("team.LoadRepositories failed: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		// FIXME: in the goroutine, it can't access the "ctx", it could only use db.DefaultContext at the moment
 | 
			
		||||
		go func(repos []*repo_model.Repository) {
 | 
			
		||||
@@ -440,7 +440,7 @@ func AddTeamMember(ctx context.Context, team *organization.Team, userID int64) e
 | 
			
		||||
		}(team.Repos)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return committer.Commit()
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func removeTeamMember(ctx context.Context, team *organization.Team, userID int64) error {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user