AkurAI Build
Menu

Public repository / 0abca36834dc5ac48f7141026da610b6c22c7533

AkurAI-Mail / src/routes/webmail/+page.ts

Latest change 0abca36834dc5ac48f7141026da610b6c22c7533 - fix: load mailbox sessions without admin status by Ólafur Búi Ólafsson

import { api } from "$lib/api";

export async function load({ url }) {
  const requested = url.searchParams.get("mailbox") ?? "";
  const authCheck = await api("/api/auth/check");
  const admin = authCheck.authenticated;
  if (!admin && !authCheck.mailbox) {
    window.location.href = `/webmail/login?next=${encodeURIComponent(url.pathname)}`;
    throw new Error("authentication required");
  }
  const status = admin
    ? await api("/api/status")
    : { hostname: url.hostname, users: [{ email: authCheck.mailbox }] };
  const users = status.users;
  const mailbox = admin && users.some((u: any) => u.email === requested)
    ? requested
    : authCheck.mailbox || users[0]?.email || "olibuijr@olibuijr.com";
  const webmail = await api(`/api/webmail?email=${encodeURIComponent(mailbox)}&folder=Inbox`);
  const publicStatus = admin ? status : { hostname: status.hostname, users: users.filter((u: any) => u.email === mailbox) };
  return { status: publicStatus, webmail, admin, sessionMailbox: mailbox };
}