fix: Fix policy document format to send as object instead of double-stringified JSON
- Change generatePolicyFromTemplate to return object instead of string - Update CreatePolicyRequest interface to accept string | object for policy - Update CreatePolicyDialog to stringify policy object only when needed - Fix QuickStartWizard to send policy object directly to API This fixes the 'Proxy error' when creating policies as the backend was receiving double-stringified JSON which failed validation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -74,7 +74,7 @@ const CreatePolicyDialog: React.FC<CreatePolicyDialogProps> = ({
|
||||
const generatePreview = () => {
|
||||
if (bucketName && selectedTemplate) {
|
||||
const generatedPolicy = policyService.generatePolicyFromTemplate(selectedTemplate, bucketName);
|
||||
setCustomPolicy(generatedPolicy);
|
||||
setCustomPolicy(JSON.stringify(generatedPolicy, null, 2));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -111,7 +111,7 @@ const CreatePolicyDialog: React.FC<CreatePolicyDialogProps> = ({
|
||||
setError('Bucket name is required');
|
||||
return;
|
||||
}
|
||||
policyToCreate = policyService.generatePolicyFromTemplate(selectedTemplate, bucketName);
|
||||
policyToCreate = JSON.stringify(policyService.generatePolicyFromTemplate(selectedTemplate, bucketName), null, 2);
|
||||
}
|
||||
|
||||
if (!validatePolicy()) {
|
||||
|
||||
@@ -12,7 +12,7 @@ export interface Policy {
|
||||
|
||||
export interface CreatePolicyRequest {
|
||||
name: string;
|
||||
policy: string;
|
||||
policy: string | object;
|
||||
}
|
||||
|
||||
export interface AttachPolicyRequest {
|
||||
@@ -220,13 +220,12 @@ class PolicyService {
|
||||
}
|
||||
|
||||
// Generate policy from template
|
||||
generatePolicyFromTemplate(templateKey: string, bucketName: string): string {
|
||||
generatePolicyFromTemplate(templateKey: string, bucketName: string): object {
|
||||
const template = policyTemplates[templateKey];
|
||||
if (!template) {
|
||||
throw new Error('Invalid template');
|
||||
}
|
||||
const policy = template.generatePolicy(bucketName);
|
||||
return JSON.stringify(policy, null, 2);
|
||||
return template.generatePolicy(bucketName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user