Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
780 B typescript
import { ClientCreateSchema } from '#db/repositories/client/types';

export default definePermissionEventHandler(
  'clients',
  'create',
  async ({ event }) => {
    const { name, expiresAt, presetId } = await readValidatedBody(
      event,
      validateZod(ClientCreateSchema, event)
    );

    if (presetId != null) {
      try {
        await Database.obfuscatorPresets.get(presetId);
      } catch (e) {
        throw createError({
          statusCode: 400,
          statusMessage: (e as Error).message,
        });
      }
    }

    const result = await Database.clients.create({ name, expiresAt, presetId });
    await WireGuard.saveConfig();
    await Obfuscator.applyAll();

    const clientId = result[0]!.clientId;
    return { success: true, clientId };
  }
);