reject duplicate secret provider name with a 400
This commit is contained in:
2 files changed
+12
-6
No files matched your search
@@ -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 });
|
||||
}
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user