Fix Simple Mapping to use proper UUIDs for mapping IDs
- Add generateUUID() function using crypto.randomUUID() with fallback - Update handleAdd to use UUID instead of Date.now() + Math.random() - UUIDs are now properly validated in backend to prevent injection - mapping_id is persisted when creating mapping pairs for reuse Co-authored-by: Koha9 <36852125+Koha9@users.noreply.github.com>
This commit is contained in:
@@ -22,6 +22,20 @@ import {
|
||||
Code2
|
||||
} from 'lucide-react';
|
||||
|
||||
// Generate a UUID for mapping rules
|
||||
const generateUUID = (): string => {
|
||||
// Use crypto.randomUUID() if available (modern browsers)
|
||||
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
||||
return crypto.randomUUID();
|
||||
}
|
||||
// Fallback to manual UUID v4 generation
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
||||
const r = Math.random() * 16 | 0;
|
||||
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
};
|
||||
|
||||
interface StrategyOption {
|
||||
value: SyncStrategy;
|
||||
label: string;
|
||||
@@ -137,7 +151,7 @@ const MappingGroupEditor: React.FC<MappingGroupEditorProps> = ({
|
||||
|
||||
const handleAdd = () => {
|
||||
if (isLocked) return;
|
||||
const newId = Date.now().toString() + Math.random().toString();
|
||||
const newId = generateUUID();
|
||||
onChange([...rules, { id: newId, search: '', replace: '' }]);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user