32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
import { isEmpty } from "@ember/utils";
|
|
import { findAll } from "discourse/models/login-method";
|
|
|
|
export default function logout(siteSettings, keyValueStore) {
|
|
if (!siteSettings || !keyValueStore) {
|
|
const container = Discourse.__container__;
|
|
siteSettings = siteSettings || container.lookup("site-settings:main");
|
|
keyValueStore = keyValueStore || container.lookup("key-value-store:main");
|
|
}
|
|
|
|
keyValueStore.abandonLocal();
|
|
|
|
const redirect = siteSettings.logout_redirect;
|
|
if (!isEmpty(redirect)) {
|
|
window.location.href = redirect;
|
|
return;
|
|
}
|
|
|
|
const sso = siteSettings.enable_sso;
|
|
const oneAuthenticator =
|
|
!siteSettings.enable_local_logins && findAll().length === 1;
|
|
|
|
if (siteSettings.login_required && (sso || oneAuthenticator)) {
|
|
// In this situation visiting most URLs will start the auth process again
|
|
// Go to the `/login` page to avoid an immediate redirect
|
|
window.location.href = Discourse.getURL("/login");
|
|
return;
|
|
}
|
|
|
|
window.location.href = Discourse.getURL("/");
|
|
}
|