mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Prevent dangling user redirects (#21856)
- It's possible that the `user_redirect` table contains a user id that no longer exists. - Delete a user redirect upon deleting the user. - Add a check for these dangling user redirects to check-db-consistency.
This commit is contained in:
		| @@ -89,6 +89,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error) | |||||||
| 		&user_model.UserBadge{UserID: u.ID}, | 		&user_model.UserBadge{UserID: u.ID}, | ||||||
| 		&pull_model.AutoMerge{DoerID: u.ID}, | 		&pull_model.AutoMerge{DoerID: u.ID}, | ||||||
| 		&pull_model.ReviewState{UserID: u.ID}, | 		&pull_model.ReviewState{UserID: u.ID}, | ||||||
|  | 		&user_model.Redirect{RedirectUserID: u.ID}, | ||||||
| 	); err != nil { | 	); err != nil { | ||||||
| 		return fmt.Errorf("deleteBeans: %w", err) | 		return fmt.Errorf("deleteBeans: %w", err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -205,6 +205,9 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er | |||||||
| 		// find stopwatches without existing issue | 		// find stopwatches without existing issue | ||||||
| 		genericOrphanCheck("Orphaned Stopwatches without existing Issue", | 		genericOrphanCheck("Orphaned Stopwatches without existing Issue", | ||||||
| 			"stopwatch", "issue", "stopwatch.issue_id=`issue`.id"), | 			"stopwatch", "issue", "stopwatch.issue_id=`issue`.id"), | ||||||
|  | 		// find redirects without existing user. | ||||||
|  | 		genericOrphanCheck("Orphaned Redirects without existing redirect user", | ||||||
|  | 			"user_redirect", "user", "user_redirect.redirect_user_id=`user`.id"), | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	for _, c := range consistencyChecks { | 	for _, c := range consistencyChecks { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user