Files

45 lines
1.3 KiB
JavaScript

import rxjs from "../lib/rx.js";
import ajax from "../lib/ajax.js";
import { forwardURLParams } from "../lib/path.js";
export function getSession() {
return ajax({
url: withShare("api/session"),
method: "GET",
responseType: "json"
}).pipe(
rxjs.map(({ responseJSON }) => responseJSON.result),
rxjs.tap(({ authorization }) => {
if (authorization) window.BEARER_TOKEN = authorization;
}),
);
}
export function createSession(authenticationRequest) {
return ajax({
method: "POST",
url: withShare("api/session"),
body: authenticationRequest,
responseType: "json",
}).pipe(rxjs.tap(({ responseHeaders }) => {
if (responseHeaders.bearer) window.BEARER_TOKEN = responseHeaders.bearer; // see ctrl_boot_frontoffice.js -> setup_iframe
}));
}
export function deleteSession() {
return ajax({
url: withShare("api/session"),
method: "DELETE"
}).pipe(rxjs.tap(() => {
delete window.BEARER_TOKEN;
}));
}
window.addEventListener("pagechange", async() => {
if (location.hash === "") return; // happy path
const token = new URLSearchParams(location.hash.replace(new RegExp("^#"), "?")).get("bearer");
if (token) window.BEARER_TOKEN = token;
});
const withShare = (url) => forwardURLParams(url, ["share"]);