wol-dash/src/hooks.server.ts

42 lines
1.1 KiB
TypeScript

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);
};