discourse-auth0-mozilla/assets/javascripts/auth0.js

76 строки
2.0 KiB
JavaScript

/* global Auth0Lock */
(function () {
function appendScript(src, callback) {
var new_script = document.createElement('script');
new_script.setAttribute('src',src);
new_script.onload = callback;
document.head.appendChild(new_script);
}
var lock;
var script_url = '//cdn.auth0.com/js/lock-6.2.js';
appendScript(script_url, function () {
var checkInterval = setInterval(function () {
if (!Discourse.SiteSettings) {
return;
}
clearInterval(checkInterval);
if (!Discourse.SiteSettings.auth0_client_id) {
return;
}
var client_id = Discourse.SiteSettings.auth0_client_id;
var domain = Discourse.SiteSettings.auth0_domain;
lock = new Auth0Lock(client_id, domain);
}, 300);
});
Discourse.ApplicationRoute.reopen({
actions: {
showLogin: function() {
if (!Discourse.SiteSettings.auth0_client_id || Discourse.SiteSettings.auth0_connection !== '') {
return this._super();
}
lock.show({
popup: true,
responseType: 'code',
callbackURL: Discourse.SiteSettings.auth0_callback_url
});
this.controllerFor('login').resetForm();
},
showCreateAccount: function () {
if (!Discourse.SiteSettings.auth0_client_id || Discourse.SiteSettings.auth0_connection !== '') {
return this._super();
}
var createAccountController = Discourse.__container__.lookup('controller:createAccount');
if (createAccountController && createAccountController.accountEmail) {
if (lock) {
lock.hide();
Discourse.Route.showModal(this, 'createAccount');
} else {
this._super();
}
} else {
lock.show({
mode: 'signup',
popup: true,
responseType: 'code',
callbackURL: Discourse.SiteSettings.auth0_callback_url
});
}
}
}
});
})();