* disable auto imports * fix imports * improve cli imports * fix imports * fix import cycle * fix imports
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { createError, getValidatedRouterParams } from 'h3';
|
|
|
|
import Database from '#server/utils/Database';
|
|
import WireGuard from '#server/utils/WireGuard';
|
|
import { definePermissionEventHandler } from '#server/utils/handler';
|
|
import { validateZod } from '#server/utils/types';
|
|
import { ClientGetSchema } from '#db/repositories/client/types';
|
|
|
|
export default definePermissionEventHandler(
|
|
'clients',
|
|
'update',
|
|
async ({ event, checkPermissions }) => {
|
|
const { clientId } = await getValidatedRouterParams(
|
|
event,
|
|
validateZod(ClientGetSchema, event)
|
|
);
|
|
|
|
const client = await Database.clients.get(clientId);
|
|
checkPermissions(client);
|
|
|
|
if (
|
|
client &&
|
|
client.expiresAt !== null &&
|
|
new Date() > new Date(client.expiresAt)
|
|
) {
|
|
throw createError({
|
|
statusCode: 422,
|
|
statusMessage:
|
|
'Client is expired. Please update the expiration date first.',
|
|
message: 'Client is expired. Please update the expiration date first.',
|
|
});
|
|
}
|
|
|
|
await Database.clients.toggle(clientId, true);
|
|
await WireGuard.saveConfig();
|
|
return { success: true };
|
|
}
|
|
);
|