mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 15:25:35 +08:00
FIX: Ruby 2 backward compatible plugin logout redirect (#19845)
This is a very subtle one. Setting the redirect URL is done by passing a hash through a Discourse event. This is broken on Ruby 2 since the support for keyword arguments in events was added. In Ruby 2 the last argument is cast to keyword arguments if it is a hash. The key point here is that creates a new copy of the hash, so what the plugin is modifying is not the hash that was passed.
This commit is contained in:
parent
4093fc6074
commit
5dcb245eac
|
@ -594,7 +594,7 @@ class SessionController < ApplicationController
|
|||
client_ip: request&.ip,
|
||||
user_agent: request&.user_agent,
|
||||
}
|
||||
DiscourseEvent.trigger(:before_session_destroy, event_data)
|
||||
DiscourseEvent.trigger(:before_session_destroy, event_data, **Discourse::Utils::EMPTY_KEYWORDS)
|
||||
redirect_url = event_data[:redirect_url]
|
||||
|
||||
reset_session
|
||||
|
|
|
@ -12,6 +12,9 @@ module Discourse
|
|||
class Utils
|
||||
URI_REGEXP ||= URI.regexp(%w[http https])
|
||||
|
||||
# TODO: Remove this once we drop support for Ruby 2.
|
||||
EMPTY_KEYWORDS ||= {}
|
||||
|
||||
# Usage:
|
||||
# Discourse::Utils.execute_command("pwd", chdir: 'mydirectory')
|
||||
# or with a block
|
||||
|
|
Loading…
Reference in New Issue
Block a user