feat: #3636853 Provide a CAPTCHA integration point for (anonymous) flagging and unflagging

  • Per-flag form IDs for the confirm forms (flag_confirm_form_FLAG, unflag_confirm_form_FLAG, unflagging_form_FLAG), keeping the previous IDs as base form IDs.
  • New flag.challenge service deciding whether a flag action requires a challenge, with CAPTCHA point support and hook_flag_challenge_required_alter().
  • Normal and AJAX links send challenged users to the confirm form; AJAX links open it in a modal.
  • Direct action routes redirect challenged users to the confirm form instead of flagging.
  • AJAX confirm form submissions with validation errors keep the dialog open.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

Related to #3636853

Merge request reports

Loading
Loading