Enabling Discourse as SSO provider (in wordpress but that is unrelated) doesn’t work when setting the redirect paramenter to non-latin chars. for example this works:
Thanks, but Wordpress creates that url via this discourse plugin shortcode [discourse_sso_client login=‘Login here’ ]
The redirect URL is automatically set to the page in which the shortcode was embedded.
You can add a redirect parameter to the shortcode:
[discourse_sso_client login='Login Through the Forum' redirect=https://wordpress.example.com/%D7%90%D7%90%D7%90%D7%90/]
That will create a link like this:
<a href="https://wordpress.example.com/?discourse_sso=1&redirect_to=https://wordpress.example.com/%D7%90%D7%90%D7%90%D7%90">Login Through the Forum</a>
You can also manually create a login link instead of using the shortcode. It needs to have the following query parameters:
I am aware that I can pass the redirect string into the shortcode, but that is not always practical. For example in my case (which I think is common), the shortcode is embedded in a sidebar shared in all pages of the website. So overriding the redirect means that users will never be redirected to the right page.
I guess i could write my own shortcode for that somehow… anyway, thanks for the answer and please consider this a feature request to support wordpress with unicode urls
Another place to fix is when the plugin receives the response: https://github.com/discourse/wp-discourse/blob/master/lib/sso-client/client.php#L382-L388
I’m not totally sure why urldecode and sanitize_text_field is used before the string is decoded, but once decoded, the sanitize_text_field call on the URL will strip all the encoded characters.
Possible suggestion: urldecode needs to be called before.
So far, those fixes seem to fix the issue gerald had.