mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
FIX: Fix registration dialog popup for 'full screen' social logins
Regression following the ember3 upgrade. In addition to fixing, this commit consolidates our social registration logic into one place, and adds tests for the behaviour.
This commit is contained in:
parent
dcdcaebd0f
commit
49593d1a00
@ -1,17 +0,0 @@
|
||||
(function() {
|
||||
const authenticationData = JSON.parse(
|
||||
document.getElementById("data-authentication").dataset.authenticationData
|
||||
);
|
||||
|
||||
Discourse.showingSignup = true;
|
||||
require("discourse/routes/application").default.reopen({
|
||||
actions: {
|
||||
didTransition: function() {
|
||||
Ember.run.next(function() {
|
||||
Discourse.authenticationComplete(authenticationData);
|
||||
});
|
||||
return this._super();
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
@ -1,15 +1,26 @@
|
||||
export default {
|
||||
name: "auth-complete",
|
||||
after: "inject-objects",
|
||||
initialize() {
|
||||
initialize(container) {
|
||||
let lastAuthResult;
|
||||
|
||||
if (window.location.search.indexOf("authComplete=true") !== -1) {
|
||||
const lastAuthResult = localStorage.getItem("lastAuthResult");
|
||||
// Happens when a popup social login loses connection to the parent window
|
||||
lastAuthResult = localStorage.getItem("lastAuthResult");
|
||||
localStorage.removeItem("lastAuthResult");
|
||||
if (lastAuthResult) {
|
||||
} else if (document.getElementById("data-authentication")) {
|
||||
// Happens for full screen logins
|
||||
lastAuthResult = document.getElementById("data-authentication").dataset
|
||||
.authenticationData;
|
||||
}
|
||||
|
||||
if (lastAuthResult) {
|
||||
const router = container.lookup("router:main");
|
||||
router.one("didTransition", () => {
|
||||
Ember.run.next(() =>
|
||||
Discourse.authenticationComplete(JSON.parse(lastAuthResult))
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -57,7 +57,6 @@
|
||||
|
||||
<%- if !current_user && cookies[:authentication_data] %>
|
||||
<meta id="data-authentication" data-authentication-data="<%= cookies.delete(:authentication_data) %>">
|
||||
<%= preload_script "authentication-complete" %>
|
||||
<%- end %>
|
||||
</head>
|
||||
|
||||
|
@ -122,7 +122,6 @@ module Discourse
|
||||
google-tag-manager.js
|
||||
google-universal-analytics.js
|
||||
preload-application-data.js
|
||||
authentication-complete.js
|
||||
print-page.js
|
||||
omniauth-complete.js
|
||||
activate-account.js
|
||||
|
40
test/javascripts/acceptance/auth-complete-test.js.es6
Normal file
40
test/javascripts/acceptance/auth-complete-test.js.es6
Normal file
@ -0,0 +1,40 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
acceptance("Auth Complete", {
|
||||
beforeEach() {
|
||||
const node = document.createElement("meta");
|
||||
node.dataset.authenticationData = JSON.stringify({
|
||||
auth_provider: "test",
|
||||
email: "blah@example.com"
|
||||
});
|
||||
node.id = "data-authentication";
|
||||
document.querySelector("head").appendChild(node);
|
||||
},
|
||||
afterEach() {
|
||||
document
|
||||
.querySelector("head")
|
||||
.removeChild(document.getElementById("data-authentication"));
|
||||
}
|
||||
});
|
||||
|
||||
QUnit.test("when login not required", async assert => {
|
||||
await visit("/");
|
||||
|
||||
assert.equal(currentPath(), "discovery.latest", "it stays on the homepage");
|
||||
|
||||
assert.ok(
|
||||
exists("#discourse-modal div.create-account"),
|
||||
"it shows the registration modal"
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test("when login required", async assert => {
|
||||
Discourse.SiteSettings.login_required = true;
|
||||
await visit("/");
|
||||
|
||||
assert.equal(currentPath(), "login", "it redirects to the login page");
|
||||
|
||||
assert.ok(
|
||||
exists("#discourse-modal div.create-account"),
|
||||
"it shows the registration modal"
|
||||
);
|
||||
});
|
Loading…
Reference in New Issue
Block a user