FEATURE: Add site setting to show more detailed #404 errors. (PR #8014)

If the setting is turned on, then the user will receive information about the subject: if it was deleted or requieres some special access to a group (only if the group is public). Otherwise, the user will receive a generic #404 error message. For now, this change affects only the topics and categories controller.

This commit also tries to refactor some of the code related to error handling. To make error pages more consistent (design-wise), the actual error page will be rendered server-side.


Preview

  • Topic in a secret category (with public group)

topic in secret category

  • Deleted topic in a public category (with public group)

a deleted topic

  • Deleted topic in a secret category

deleted topic in secret category

  • Topic in a secret category (with private group)

topic in super secret category

  • Secret category (with a public group)

category page

GitHub

You’ve signed the CLA, udan11. Thank you! This pull request is ready for review.

Sorting by a boolean is a little odd.

Why replace the dash (-) by space () in the slug?

Are we 100% sure the response always has the extras.html attributes?

Since this is opt in there is not too much risk here, the big thing to watch for is that we don’t want perf of standard 404s to get any slower after this change (if site setting is not enabled)

Can we get this rebased and ready to merge addressing @ZogStriP’s concerns?

1 Like

Let’s take an example.

The search input field has all the words in the slug concatenated.

It is done this way to favor groups with public admission over groups with membership requests.

The title of this pull request changed from “[WIP] FEATURE: Add site setting to show more detailed #404 errors.” to "FEATURE: Add site setting to show more detailed #404 errors.

This pull request has been mentioned on Discourse Meta. There might be relevant details there:

https://meta.discourse.org/t/redirect-to-protected-category-after-login/122577/12

This pull request has been mentioned on Discourse Meta. There might be relevant details there:

This pull request has been mentioned on Discourse Meta. There might be relevant details there:

https://meta.discourse.org/t/auto-login-setting-when-private-pages-are-requested-by-unlogged-users/131142/4