Skip to content
Navigation Menu
Sign in
Appearance settings
Platform
AI CODE CREATION
GitHub Copilot
Write better code with AI
GitHub Copilot app
Direct agents from issue to merge
MCP Registry
Integrate external tools
DEVELOPER WORKFLOWS
Actions
Automate any workflow
Codespaces
Instant dev environments
Issues
Plan and track work
Code Review
Manage code changes
Code Quality
Enforce quality at merge
APPLICATION SECURITY
GitHub Advanced Security
Find and fix vulnerabilities
Code security
Secure your code as you build
Secret protection
Stop leaks before they start
EXPLORE
Why GitHub
Documentation
Blog
Changelog
Marketplace
View all features
Solutions
BY COMPANY SIZE
Enterprises
Small and medium teams
Startups
Nonprofits
BY USE CASE
App Modernization
DevSecOps
DevOps
CI/CD
View all use cases
BY INDUSTRY
Healthcare
Financial services
Manufacturing
Government
View all industries
View all solutions
Resources
EXPLORE BY TOPIC
AI
Software Development
DevOps
Security
View all topics
EXPLORE BY TYPE
Customer stories
Events & webinars
Ebooks & reports
Business insights
GitHub Skills
SUPPORT & SERVICES
Documentation
Customer support
Community forum
Trust center
Partners
View all resources
Open Source
COMMUNITY
GitHub Sponsors
Fund open source developers
PROGRAMS
Security Lab
Maintainer Community
Accelerator
GitHub Stars
Archive Program
REPOSITORIES
Topics
Trending
Collections
Enterprise
ENTERPRISE SOLUTIONS
Enterprise platform
AI-powered developer platform
AVAILABLE ADD-ONS
GitHub Advanced Security
Enterprise-grade security features
Copilot for Business
Enterprise-grade AI features
Premium Support
Enterprise-grade 24/7 support
Pricing
Search
/
Sign in
Sign up
Appearance settings
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
devondragon
/
SpringUserFramework
Public
Notifications
You must be signed in to change notification settings
Fork
44
Star
189
Code
Issues
2
Pull requests
0
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Optional Turnstile CAPTCHA for unauthenticated email-sending API actions
- #347
#347
Merged
devondragon
merged 14 commits into
main
devondragon/SpringUserFramework:main
from
feature/issue-346-captcha
devondragon/SpringUserFramework:feature/issue-346-captcha
Copy head branch name to clipboard
Aug 12, 2026
Conversation
Commits
14
(14)
Checks
Files changed
Merged
Optional Turnstile CAPTCHA for unauthenticated email-sending API actions
#347
devondragon
merged 14 commits into
main
devondragon/SpringUserFramework:main
from
feature/issue-346-captcha
devondragon/SpringUserFramework:feature/issue-346-captcha
Copy head branch name to clipboard
Commits
Commits on Aug 9, 2026
feat: add optional ds-spring-cf-turnstile dependency and captcha config properties (#346)
devondragon
committed
3add383
View commit details
Copy full SHA for 3add383
Browse repository at this point
feat: add CaptchaService SPI and Turnstile adapter (#346)
devondragon
committed
60b276b
View commit details
Copy full SHA for 60b276b
Browse repository at this point
feat: fail closed on unexpected Turnstile errors in captcha adapter (#346)
devondragon
committed
2c42d39
View commit details
Copy full SHA for 2c42d39
Browse repository at this point
feat: add captcha validation interceptor for email-sending API actions (#346)
devondragon
committed
59e0d86
View commit details
Copy full SHA for 59e0d86
Browse repository at this point
feat: auto-configure captcha with fail-closed startup validation (#346)
devondragon
committed
f7c8d3b
View commit details
Copy full SHA for f7c8d3b
Browse repository at this point
test: integration coverage for captcha protection and per-action toggles (#346)
devondragon
committed
b62c5d8
View commit details
Copy full SHA for b62c5d8
Browse repository at this point
test: drain async mail executor before captcha reject-path assertions (#346)
devondragon
committed
4d26b21
View commit details
Copy full SHA for 4d26b21
Browse repository at this point
feat: expose captchaSiteKey model attribute for consumer templates (#346)
devondragon
committed
5c02b3f
View commit details
Copy full SHA for 5c02b3f
Browse repository at this point
docs: document captcha configuration and client contract (#346)
devondragon
committed
ae8c84f
View commit details
Copy full SHA for ae8c84f
Browse repository at this point
docs: correct disabled-state bean registration wording (#346)
devondragon
committed
92a85b8
View commit details
Copy full SHA for 92a85b8
Browse repository at this point
fix: enforce captcha on path variants to close matcher-mismatch bypass (#346)
Show description for 3ca7026
devondragon
committed
3ca7026
View commit details
Copy full SHA for 3ca7026
Browse repository at this point
style: reindent captcha SPI/adapter to 4 spaces and drop unused import (#346)
devondragon
committed
36c647a
View commit details
Copy full SHA for 36c647a
Browse repository at this point
Commits on Aug 12, 2026
refactor: redesign captcha SPI and harden per code review (#346)
Show description for 45378ad
devondragon
committed
45378ad
View commit details
Copy full SHA for 45378ad
Browse repository at this point
docs: note custom PathPatternParser caveat in CAPTCHA scope (#346)
devondragon
committed
9e77687
View commit details
Copy full SHA for 9e77687
Browse repository at this point
You can’t perform that action at this time.