- Added AltchaService class for managing ALTCHA captcha challenges and solutions. - Created CaptchaController to handle API requests for generating challenges. - Introduced CaptchaGuard for validating captcha solutions on public endpoints. - Developed unit tests for AltchaService to ensure challenge creation and solution verification functionality. - Implemented integration tests for the Captcha API endpoint and captcha bypass behavior when disabled. - Added documentation for the Captcha API in the corresponding markdown file.
1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_claude_prompt_altcha_captcha_integration_md", "label": "altcha-captcha-integration.md", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L1"}, {"id": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "label": "\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc ALTCHA (\u06a9\u067e\u0686\u0627\u06cc Self-Hosted\u060c Proof-of-Work) \u0631\u0648\u06cc endpoint\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L1"}, {"id": "prompt_altcha_captcha_integration_\u067e\u0631\u0648\u0698\u0647", "label": "\u067e\u0631\u0648\u0698\u0647", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L3"}, {"id": "prompt_altcha_captcha_integration_\u0632\u0645\u06cc\u0646\u0647", "label": "\u0632\u0645\u06cc\u0646\u0647", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L9"}, {"id": "prompt_altcha_captcha_integration_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "label": "\u0645\u0634\u06a9\u0644 / \u0647\u062f\u0641", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L21"}, {"id": "prompt_altcha_captcha_integration_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc_\u06a9\u0647_\u0628\u0627\u06cc\u062f_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u0648\u0646\u062f", "label": "endpoint\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u0634\u0648\u0646\u062f", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L25"}, {"id": "prompt_altcha_captcha_integration_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "label": "\u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L41"}, {"id": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "label": "\u0648\u0638\u0627\u06cc\u0641", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L67"}, {"id": "prompt_altcha_captcha_integration_\u06f1_\u0646\u0635\u0628_\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647_\u06cc_\u0631\u0633\u0645\u06cc_php", "label": "\u06f1. \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u06cc \u0631\u0633\u0645\u06cc PHP", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L69"}, {"id": "prompt_altcha_captcha_integration_\u06f2_\u0633\u0631\u0648\u06cc\u0633_\u0645\u0631\u06a9\u0632\u06cc_src_shared_captcha_altchaservice_php_namespace_\u062c\u062f\u06cc\u062f_app_shared_captcha", "label": "\u06f2. \u0633\u0631\u0648\u06cc\u0633 \u0645\u0631\u06a9\u0632\u06cc \u2014 `src/Shared/Captcha/AltchaService.php` (namespace \u062c\u062f\u06cc\u062f `App\\Shared\\Captcha`)", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L76"}, {"id": "prompt_altcha_captcha_integration_\u06f3_guard_\u0642\u0627\u0628\u0644_\u0627\u0633\u062a\u0641\u0627\u062f\u0647_\u0645\u062c\u062f\u062f_src_shared_captcha_captchaguard_php", "label": "\u06f3. Guard \u0642\u0627\u0628\u0644\u200c\u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0645\u062c\u062f\u062f \u2014 `src/Shared/Captcha/CaptchaGuard.php`", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L85"}, {"id": "prompt_altcha_captcha_integration_\u06f4_endpoint_\u0635\u062f\u0648\u0631_challenge_\u0639\u0645\u0648\u0645\u06cc", "label": "\u06f4. Endpoint \u0635\u062f\u0648\u0631 challenge \u2014 \u0639\u0645\u0648\u0645\u06cc", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L104"}, {"id": "prompt_altcha_captcha_integration_\u06f5_\u0627\u0639\u0645\u0627\u0644_guard_\u0631\u0648\u06cc_endpoint\u0647\u0627", "label": "\u06f5. \u0627\u0639\u0645\u0627\u0644 Guard \u0631\u0648\u06cc endpoint\u0647\u0627", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L118"}, {"id": "prompt_altcha_captcha_integration_\u06f6_\u062a\u0646\u0638\u06cc\u0645\u0627\u062a", "label": "\u06f6. \u062a\u0646\u0638\u06cc\u0645\u0627\u062a", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L128"}, {"id": "prompt_altcha_captcha_integration_\u06f7_frontend_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646_react_assets_admin", "label": "\u06f7. Frontend \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646 React (`assets/admin/`)", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L150"}, {"id": "prompt_altcha_captcha_integration_\u06f8_\u062a\u0633\u062a", "label": "\u06f8. \u062a\u0633\u062a", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L158"}, {"id": "prompt_altcha_captcha_integration_\u06f9_\u0645\u0633\u062a\u0646\u062f\u0627\u062a", "label": "\u06f9. \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L164"}, {"id": "prompt_altcha_captcha_integration_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "label": "\u0646\u06a9\u0627\u062a \u0645\u0647\u0645", "file_type": "document", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L170"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_claude_prompt_altcha_captcha_integration_md", "target": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L1", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u067e\u0631\u0648\u0698\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L3", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u0632\u0645\u06cc\u0646\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L9", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u0645\u0634\u06a9\u0644_\u0647\u062f\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L21", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc_\u06a9\u0647_\u0628\u0627\u06cc\u062f_\u0645\u062d\u0627\u0641\u0638\u062a_\u0634\u0648\u0646\u062f", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L25", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L41", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L67", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f1_\u0646\u0635\u0628_\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647_\u06cc_\u0631\u0633\u0645\u06cc_php", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L69", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f2_\u0633\u0631\u0648\u06cc\u0633_\u0645\u0631\u06a9\u0632\u06cc_src_shared_captcha_altchaservice_php_namespace_\u062c\u062f\u06cc\u062f_app_shared_captcha", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L76", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f3_guard_\u0642\u0627\u0628\u0644_\u0627\u0633\u062a\u0641\u0627\u062f\u0647_\u0645\u062c\u062f\u062f_src_shared_captcha_captchaguard_php", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L85", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f4_endpoint_\u0635\u062f\u0648\u0631_challenge_\u0639\u0645\u0648\u0645\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L104", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f5_\u0627\u0639\u0645\u0627\u0644_guard_\u0631\u0648\u06cc_endpoint\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L118", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f6_\u062a\u0646\u0638\u06cc\u0645\u0627\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L128", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f7_frontend_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646_react_assets_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L150", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f8_\u062a\u0633\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L158", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_altcha_captcha_integration_\u06f9_\u0645\u0633\u062a\u0646\u062f\u0627\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L164", "weight": 1.0}, {"source": "prompt_altcha_captcha_integration_\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647_\u0633\u0627\u0632\u06cc_altcha_\u06a9\u067e\u0686\u0627\u06cc_self_hosted_proof_of_work_\u0631\u0648\u06cc_endpoint\u0647\u0627\u06cc_\u0639\u0645\u0648\u0645\u06cc", "target": "prompt_altcha_captcha_integration_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/altcha-captcha-integration.md", "source_location": "L170", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} |