import { env } from '$env/dynamic/private'; import { initRepos, users } from '$lib/server/db'; import { Guard } from '$lib/server/guard'; import { getUserFromSession } from '$lib/server/sessions'; import type { Handle, ServerInit } from '@sveltejs/kit'; import bcrypt from 'bcryptjs'; import { writeFileSync } from 'fs'; import { nanoid } from 'nanoid'; export const init: ServerInit = async () => { await initRepos(); if (!(await users.any())) { let pass = env.DEFAULT_ADMIN_PASS; if (!pass) { pass = nanoid(); console.log(`default admin password: ${pass}`); console.log("saved to ./default_admin_pass.txt, don't share it and change it asap"); writeFileSync('./data/default_admin_pass.txt', pass); } await users.create({ name: 'admin', password: bcrypt.hashSync(pass, 10), admin: true, groups: [], devices: [], }); } }; export const handle: Handle = async ({ event, resolve }) => { const { cookies, locals } = event; locals.guard = new Guard(await getUserFromSession(cookies.get('session'))); return await resolve(event); };