Sfoglia il codice sorgente

Add: Client和Project验证字符

iaun 3 mesi fa
parent
commit
dd0720eb94
2 ha cambiato i file con 32 aggiunte e 2 eliminazioni
  1. 18 0
      backend/app/api/tasks.py
  2. 14 2
      frontend/src/pages/Tasks.tsx

+ 18 - 0
backend/app/api/tasks.py

@@ -169,6 +169,24 @@ def create_task():
             details={"missing_fields": missing_metadata}
         )
     
+    # Validate clientName and projectName don't contain invalid filename characters
+    import re
+    invalid_chars_pattern = r'[<>\/\\|*:?"]'
+    client_name = project_metadata.get('clientName', '')
+    project_name = project_metadata.get('projectName', '')
+    
+    if re.search(invalid_chars_pattern, client_name):
+        raise ValidationError(
+            message="Client name contains invalid characters",
+            details={"field": "clientName", "reason": "Cannot contain < > / \\ | * : ? \""}
+        )
+    
+    if re.search(invalid_chars_pattern, project_name):
+        raise ValidationError(
+            message="Project name contains invalid characters",
+            details={"field": "projectName", "reason": "Cannot contain < > / \\ | * : ? \""}
+        )
+    
     # Validate credential access for regular users
     for cred_id in credential_ids:
         if not check_credential_access(current_user, cred_id):

+ 14 - 2
frontend/src/pages/Tasks.tsx

@@ -522,7 +522,13 @@ export default function Tasks() {
           <Form.Item
             name="clientName"
             label="Client Name"
-            rules={[{ required: true, message: 'Please enter client name' }]}
+            rules={[
+              { required: true, message: 'Please enter client name' },
+              { 
+                pattern: /^[^<>\/\\|*:?"]*$/, 
+                message: 'Cannot contain < > / \\ | * : ? "' 
+              }
+            ]}
           >
             <Input placeholder="Enter client name" />
           </Form.Item>
@@ -530,7 +536,13 @@ export default function Tasks() {
           <Form.Item
             name="projectName"
             label="Project Name"
-            rules={[{ required: true, message: 'Please enter project name' }]}
+            rules={[
+              { required: true, message: 'Please enter project name' },
+              { 
+                pattern: /^[^<>\/\\|*:?"]*$/, 
+                message: 'Cannot contain < > / \\ | * : ? "' 
+              }
+            ]}
           >
             <Input placeholder="Enter project name" />
           </Form.Item>