Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
864 B typescript
export default defineEventHandler(async (event) => {
  const url = getRequestURL(event);

  if (
    url.pathname.startsWith('/api/') ||
    url.pathname.startsWith('/_i18n/') ||
    url.pathname.startsWith('/_nuxt/') ||
    url.pathname.startsWith('/__nuxt') ||
    url.pathname === '/favicon.ico'
  ) {
    return;
  }

  const { step, done } = await Database.general.getSetupStep();
  if (!done) {
    const parsedSetup = url.pathname.match(/\/setup\/(\d)/);
    if (!parsedSetup) {
      return sendRedirect(event, `/setup/1`, 302);
    }
    const [_, currentSetup] = parsedSetup;

    if (step.toString() === currentSetup) {
      return;
    }
    return sendRedirect(event, `/setup/${step}`, 302);
  } else {
    // If already set up
    if (!url.pathname.startsWith('/setup/')) {
      return;
    }
    return sendRedirect(event, '/login', 302);
  }
});