40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { redirect } from '@sveltejs/kit';
|
|
import { api } from '$lib/api';
|
|
import { getStoredClientSession, hasStoredAdminSession, hasStoredClientSession } from '$lib/session';
|
|
import { canOpenClientAccess, getWorkspaceHomeHref } from '$lib/workspace-access';
|
|
|
|
function emptyPayload() {
|
|
return {
|
|
clients: [],
|
|
exportPreview: {
|
|
generated_at: '',
|
|
client_rows: [],
|
|
user_rows: [],
|
|
feature_rows: [],
|
|
permission_rows: [],
|
|
audit_rows: [],
|
|
clients: []
|
|
}
|
|
};
|
|
}
|
|
|
|
export async function load({ fetch }) {
|
|
if (!hasStoredAdminSession() && !hasStoredClientSession()) {
|
|
return emptyPayload();
|
|
}
|
|
|
|
if (hasStoredClientSession()) {
|
|
const session = getStoredClientSession();
|
|
if (session && !canOpenClientAccess(session)) {
|
|
throw redirect(307, getWorkspaceHomeHref(session));
|
|
}
|
|
}
|
|
|
|
try {
|
|
const [clients, exportPreview] = await Promise.all([api.clientAccess(fetch), api.clientAccessExport(fetch)]);
|
|
return { clients, exportPreview };
|
|
} catch {
|
|
return emptyPayload();
|
|
}
|
|
}
|