mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 17:51:03 +08:00
FEATURE: Add site setting to show more detailed 404 errors. (#8014)
If the setting is turned on, then the user will receive information about the subject: if it was deleted or requires 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.
This commit is contained in:
@ -71,13 +71,18 @@ module Discourse
|
||||
|
||||
# When they don't have permission to do something
|
||||
class InvalidAccess < StandardError
|
||||
attr_reader :obj, :custom_message, :opts
|
||||
attr_reader :obj
|
||||
attr_reader :opts
|
||||
attr_reader :custom_message
|
||||
attr_reader :group
|
||||
|
||||
def initialize(msg = nil, obj = nil, opts = nil)
|
||||
super(msg)
|
||||
|
||||
@opts = opts || {}
|
||||
@custom_message = opts[:custom_message] if @opts[:custom_message]
|
||||
@obj = obj
|
||||
@custom_message = opts[:custom_message] if @opts[:custom_message]
|
||||
@group = opts[:group] if @opts[:group]
|
||||
end
|
||||
end
|
||||
|
||||
@ -86,12 +91,15 @@ module Discourse
|
||||
attr_reader :status
|
||||
attr_reader :check_permalinks
|
||||
attr_reader :original_path
|
||||
attr_reader :custom_message
|
||||
|
||||
def initialize(msg = nil, status: 404, check_permalinks: false, original_path: nil, custom_message: nil)
|
||||
super(msg)
|
||||
|
||||
def initialize(message = nil, status: 404, check_permalinks: false, original_path: nil)
|
||||
@status = status
|
||||
@check_permalinks = check_permalinks
|
||||
@original_path = original_path
|
||||
super(message)
|
||||
@custom_message = custom_message
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user