Skip to content

feat(security): let apps refuse requests early with request guards - #65735

Draft
karlitschek wants to merge 1 commit into
masterfrom
feat/request-guards
Draft

karlitschek wants to merge 1 commit into
masterfrom
feat/request-guards

Conversation

@karlitschek

@karlitschek karlitschek commented Oct 20, 2026 •

Copy link
Copy Markdown
Member
  • Resolves: #

Summary

One of seven small, independent core changes needed by a planned intrusion_detection app. Each can be reviewed and merged on its own:

  1. feat(security): let apps refuse requests early with request guards #65735 – request guards: let apps refuse requests early, on every entry point ← this PR
  2. feat(auth): make AppPasswordCreatedEvent public and dispatch it everywhere #65736 – public AppPasswordCreatedEvent, dispatched everywhere
  3. feat(auth): allow apps to invalidate a single token #65737 – IProvider::invalidateTokenById() in the public token provider
  4. feat(sharing): dispatch an event when a share link access fails #65738 – ShareLinkAccessFailedEvent
  5. feat(security): dispatch an event when a password reset is requested #65739 – PasswordResetRequestedEvent
  6. feat(login-flow): warn when a login flow was started from another network #65740 – login flow v2 remembers where it was started and warns on another network
  7. feat(2fa): allow apps to ask for the second factor again in a session #65741 – IChallengeRequester: ask for the second factor again in a session

TODO

  • Description by the author
  • Manual test on a live instance

Checklist

AI (if applicable)

  • The content of this PR was partly or fully generated using AI

AI disclosure: this change was written with Claude Code (claude-opus-5-5) and reviewed by the author; every commit carries an Assisted-by trailer.

🤖 Generated with Claude Code

Apps can register an IRequestGuard. Guards are asked for every web
request after app registration and before the session is started, so a
refusal covers every entry point (index.php, remote.php, ocs, public.php,
status.php). A refused request gets a 403 with Retry-After and a short
reference the user can give to an administrator. A guard that throws is
logged and ignored.

Assisted-by: ClaudeCode:claude-opus-5-5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Frank Karlitschek <karlitschek@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants