mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 07:24:11 +08:00
FIX: redirect to original URL after social login
This commit is contained in:
@ -217,7 +217,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
|
|||||||
|
|
||||||
// Reload the page if we're authenticated
|
// Reload the page if we're authenticated
|
||||||
if (options.authenticated) {
|
if (options.authenticated) {
|
||||||
const destinationUrl = $.cookie('destination_url');
|
const destinationUrl = $.cookie('destination_url') || options.destination_url;
|
||||||
if (destinationUrl) {
|
if (destinationUrl) {
|
||||||
// redirect client to the original URL
|
// redirect client to the original URL
|
||||||
$.cookie('destination_url', null);
|
$.cookie('destination_url', null);
|
||||||
|
@ -41,6 +41,7 @@ class Users::OmniauthCallbacksController < ApplicationController
|
|||||||
@auth_result = authenticator.after_authenticate(auth)
|
@auth_result = authenticator.after_authenticate(auth)
|
||||||
|
|
||||||
origin = request.env['omniauth.origin']
|
origin = request.env['omniauth.origin']
|
||||||
|
|
||||||
if cookies[:destination_url].present?
|
if cookies[:destination_url].present?
|
||||||
origin = cookies[:destination_url]
|
origin = cookies[:destination_url]
|
||||||
cookies.delete(:destination_url)
|
cookies.delete(:destination_url)
|
||||||
@ -53,8 +54,10 @@ class Users::OmniauthCallbacksController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
unless @origin.present?
|
if @origin.blank?
|
||||||
@origin = Discourse.base_uri("/")
|
@origin = Discourse.base_uri("/")
|
||||||
|
else
|
||||||
|
@auth_result.destination_url = origin
|
||||||
end
|
end
|
||||||
|
|
||||||
if @auth_result.failed?
|
if @auth_result.failed?
|
||||||
|
@ -4,7 +4,7 @@ class Auth::Result
|
|||||||
:awaiting_approval, :authenticated, :authenticator_name,
|
:awaiting_approval, :authenticated, :authenticator_name,
|
||||||
:requires_invite, :not_allowed_from_ip_address,
|
:requires_invite, :not_allowed_from_ip_address,
|
||||||
:admin_not_allowed_from_ip_address, :omit_username,
|
:admin_not_allowed_from_ip_address, :omit_username,
|
||||||
:skip_email_validation
|
:skip_email_validation, :destination_url
|
||||||
|
|
||||||
attr_accessor(
|
attr_accessor(
|
||||||
:failed,
|
:failed,
|
||||||
@ -42,13 +42,15 @@ class Auth::Result
|
|||||||
date: I18n.l(user.suspended_till, format: :date_only), reason: user.suspend_reason)
|
date: I18n.l(user.suspended_till, format: :date_only), reason: user.suspend_reason)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
result = {
|
||||||
authenticated: !!authenticated,
|
authenticated: !!authenticated,
|
||||||
awaiting_activation: !!awaiting_activation,
|
awaiting_activation: !!awaiting_activation,
|
||||||
awaiting_approval: !!awaiting_approval,
|
awaiting_approval: !!awaiting_approval,
|
||||||
not_allowed_from_ip_address: !!not_allowed_from_ip_address,
|
not_allowed_from_ip_address: !!not_allowed_from_ip_address,
|
||||||
admin_not_allowed_from_ip_address: !!admin_not_allowed_from_ip_address
|
admin_not_allowed_from_ip_address: !!admin_not_allowed_from_ip_address
|
||||||
}
|
}
|
||||||
|
result[:destination_url] = destination_url if authenticated && destination_url.present?
|
||||||
|
result
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
result = { email: email,
|
result = { email: email,
|
||||||
|
Reference in New Issue
Block a user