Skip to content

Commit 5c23901

Browse files
authored
Catch invalid node on wiki revision request (#8729)
fixes #8728
1 parent 5e40287 commit 5c23901

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

app/controllers/wiki_controller.rb

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -288,21 +288,25 @@ def revisions
288288

289289
def revision
290290
@node = Node.find_wiki(params[:id])
291-
@tags = @node.tags
292-
@tagnames = @tags.collect(&:name)
293-
@unpaginated = true
294-
@is_revision = true
295-
set_sidebar :tags, @tagnames, videos: true
296-
@revision = Revision.find_by_nid_and_vid(@node.id, params[:vid])
297-
if @revision.nil?
298-
flash[:error] = I18n.t('wiki_controller.revision_not_found')
299-
redirect_to action: 'revisions'
300-
elsif @revision.status == 1 || current_user&.can_moderate?
301-
@title = I18n.t('wiki_controller.revisions_for', title: @revision.title).html_safe
302-
render template: 'wiki/show'
291+
if @node
292+
@tags = @node.tags
293+
@tagnames = @tags.collect(&:name)
294+
@unpaginated = true
295+
@is_revision = true
296+
set_sidebar :tags, @tagnames, videos: true
297+
@revision = Revision.find_by_nid_and_vid(@node.id, params[:vid])
298+
if @revision.nil?
299+
flash[:error] = I18n.t('wiki_controller.revision_not_found')
300+
redirect_to action: 'revisions'
301+
elsif @revision.status == 1 || current_user&.can_moderate?
302+
@title = I18n.t('wiki_controller.revisions_for', title: @revision.title).html_safe
303+
render template: 'wiki/show'
304+
else
305+
flash[:error] = I18n.t('wiki_controller.revision_has_been_moderated').html_safe
306+
redirect_to @node.path
307+
end
303308
else
304-
flash[:error] = I18n.t('wiki_controller.revision_has_been_moderated').html_safe
305-
redirect_to @node.path
309+
flash[:error] = I18n.t('wiki_controller.invalid_wiki_page')
306310
end
307311
end
308312

0 commit comments

Comments
 (0)