diff --git a/public/assets/pages/viewerpage/application_downloader.js b/public/assets/pages/viewerpage/application_downloader.js index 6918d6e0..7f0073cc 100644 --- a/public/assets/pages/viewerpage/application_downloader.js +++ b/public/assets/pages/viewerpage/application_downloader.js @@ -9,7 +9,7 @@ import { transition, getFilename, getDownloadUrl } from "./common.js"; import "../../components/icon.js"; import "./component_menubar.js"; -export default async function(render) { +export default async function(render, { acl$ }) { const $page = createElement(`
@@ -41,6 +41,7 @@ export default async function(render) { })), rxjs.tap(() => setLoading(false)), )); + effect(acl$); } export function init() { diff --git a/public/assets/pages/viewerpage/model_files.js b/public/assets/pages/viewerpage/model_files.js index 235f3d51..dafb0392 100644 --- a/public/assets/pages/viewerpage/model_files.js +++ b/public/assets/pages/viewerpage/model_files.js @@ -1,12 +1,23 @@ +import { toHref, navigate } from "../../lib/skeleton/router.js"; import rxjs from "../../lib/rx.js"; import ajax from "../../lib/ajax.js"; -import { getCurrentPath } from "./common.js"; +import { AjaxError } from "../../lib/error.js"; import { forwardURLParams } from "../../lib/path.js"; +import { getCurrentPath } from "./common.js"; export const options = () => ajax({ url: forwardURLParams(`api/files/cat?path=${encodeURIComponent(getCurrentPath())}`, ["share"]), method: "OPTIONS", -}).pipe(rxjs.map((res) => res.responseHeaders.allow.replace(/\r/, "").split(", "))); +}).pipe( + rxjs.catchError((err) => { + if (err instanceof AjaxError && err.err().status === 401) { + navigate(toHref("/login?next=" + location.pathname + location.hash + location.search)); + return rxjs.EMPTY; + } + throw err; + }), + rxjs.map((res) => res.responseHeaders.allow.replace(/\r/, "").split(", ")), +); export const cat = () => ajax({ url: forwardURLParams("api/files/cat?path=" + encodeURIComponent(getCurrentPath()), ["share"]),