reject duplicate secret provider name with a 400

This commit is contained in:
jarek committed 2026-08-14 15:59:50 +02:00
1 parent 5fef45e003
commit 19548772df
2 files changed
+12 -6

No files matched your search

+5 -3
View File
@@ -44,15 +44,17 @@ export const POST: RequestHandler = async (event) => {
return json({ error: 'Config is required' }, { status: 400 });
}
const existing = await getSecretProviders();
if (existing.some((p) => p.name.trim() === name)) {
return json({ error: 'A secret provider with this name already exists' }, { status: 400 });
}
const provider = await createSecretProvider({ type, name, config });
await auditSecretProvider(event, 'create', provider.id, provider.name, { type });
// Never return the decrypted config.
return json(provider, { status: 201 });
} catch (error: any) {
console.error('Error creating secret provider:', error);
if (error.message?.includes('UNIQUE') || error.message?.includes('unique')) {
return json({ error: 'A secret provider with this name already exists' }, { status: 400 });
}
return json({ error: 'Failed to create secret provider' }, { status: 500 });
}
};
@@ -66,6 +66,13 @@ export const PUT: RequestHandler = async (event) => {
return json({ error: 'Config must be an object' }, { status: 400 });
}
if (name !== undefined && name !== existing.name) {
const all = await getSecretProviders();
if (all.some((p) => p.id !== id && p.name.trim() === name)) {
return json({ error: 'A secret provider with this name already exists' }, { status: 400 });
}
}
const updated = await updateSecretProvider(id, { name, type, config });
if (!updated) {
return json({ error: 'Secret provider not found' }, { status: 404 });
@@ -81,9 +88,6 @@ export const PUT: RequestHandler = async (event) => {
return json(updated);
} catch (error: any) {
console.error('Error updating secret provider:', error);
if (error.message?.includes('UNIQUE') || error.message?.includes('unique')) {
return json({ error: 'A secret provider with this name already exists' }, { status: 400 });
}
return json({ error: 'Failed to update secret provider' }, { status: 500 });
}
};