mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 15:06:26 +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,
|
client_ip: request&.ip,
|
||||||
user_agent: request&.user_agent,
|
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]
|
redirect_url = event_data[:redirect_url]
|
||||||
|
|
||||||
reset_session
|
reset_session
|
||||||
|
|
|
@ -12,6 +12,9 @@ module Discourse
|
||||||
class Utils
|
class Utils
|
||||||
URI_REGEXP ||= URI.regexp(%w[http https])
|
URI_REGEXP ||= URI.regexp(%w[http https])
|
||||||
|
|
||||||
|
# TODO: Remove this once we drop support for Ruby 2.
|
||||||
|
EMPTY_KEYWORDS ||= {}
|
||||||
|
|
||||||
# Usage:
|
# Usage:
|
||||||
# Discourse::Utils.execute_command("pwd", chdir: 'mydirectory')
|
# Discourse::Utils.execute_command("pwd", chdir: 'mydirectory')
|
||||||
# or with a block
|
# or with a block
|
||||||
|
|
Loading…
Reference in New Issue
Block a user