first commit
This commit is contained in:
commit
db5762abd4
687 files changed
+171307
No files matched your search
@@ -0,0 +1,21 @@
|
||||
import { defineNuxtPlugin } from "#app";
|
||||
import { createPinia } from "pinia";
|
||||
import PrimeVue from "primevue/config";
|
||||
import ConfirmationService from "primevue/confirmationservice";
|
||||
import DialogService from "primevue/dialogservice";
|
||||
import ToastService from "primevue/toastservice";
|
||||
import Tooltip from "primevue/tooltip";
|
||||
import options from "~/config/primevue.js";
|
||||
|
||||
export default defineNuxtPlugin({
|
||||
name: "console-ui",
|
||||
order: -20,
|
||||
setup({ vueApp }) {
|
||||
vueApp.use(createPinia());
|
||||
vueApp.use(PrimeVue, options);
|
||||
vueApp.use(ConfirmationService);
|
||||
vueApp.use(DialogService);
|
||||
vueApp.use(ToastService);
|
||||
vueApp.directive("tooltip", Tooltip);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
import { defineNuxtPlugin } from "#app";
|
||||
import { useAuth, useApi } from "~/lib/auth.js";
|
||||
import { t as useSiteConfig } from "~/lib/useSiteConfig.js";
|
||||
import { t as useNavigation } from "~/lib/navigation-state.js";
|
||||
|
||||
export default defineNuxtPlugin({
|
||||
name: "console-bootstrap",
|
||||
dependsOn: ["console-ui"],
|
||||
async setup() {
|
||||
const auth = useAuth();
|
||||
const tasks = [useSiteConfig().load()];
|
||||
if (auth.isLoggedIn && window.location.pathname !== "/home.htm") {
|
||||
tasks.push(useNavigation(auth, useApi()).load(), auth.fetchOverview());
|
||||
}
|
||||
await Promise.allSettled(tasks);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
import { defineNuxtPlugin } from "#app";
|
||||
import { useAuth, isValidJwt } from "~/lib/auth.js";
|
||||
import { r as safeRedirect } from "~/lib/auth-redirect.js";
|
||||
import { isPublicRoute } from "~/utils/access.js";
|
||||
|
||||
export default defineNuxtPlugin({
|
||||
name: "console-session-sync",
|
||||
dependsOn: ["console-ui"],
|
||||
setup(app) {
|
||||
const auth = useAuth();
|
||||
const router = app.$router;
|
||||
function reconcileSession(event) {
|
||||
if (
|
||||
event.storageArea !== localStorage ||
|
||||
(event.key !== null && event.key !== "jwt")
|
||||
)
|
||||
return;
|
||||
// Read the latest value: several storage events may already be queued.
|
||||
const persisted = localStorage.getItem("jwt");
|
||||
if (persisted === auth.token) return;
|
||||
if (isValidJwt(persisted)) auth.loginWithJwt(persisted);
|
||||
else auth.clear();
|
||||
const route = router.currentRoute.value;
|
||||
if (!auth.isLoggedIn && !isPublicRoute(route)) {
|
||||
const redirect = safeRedirect(route.fullPath);
|
||||
void router.replace({
|
||||
path: "/login",
|
||||
query: redirect === "/" ? {} : { redirect },
|
||||
});
|
||||
}
|
||||
}
|
||||
window.addEventListener("storage", reconcileSession);
|
||||
app.vueApp.onUnmount(() =>
|
||||
window.removeEventListener("storage", reconcileSession),
|
||||
);
|
||||
},
|
||||
});
|
||||
Reference in new issue
Block a user