mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-30 12:21:06 +00: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:
parent
0b993a0d04
commit
20385b52a3
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue