fe_comment v2: FE-user feedback tickets with summary, uploads and API

- Replace the v1 submit endpoint with a full JSON API under
  /api/fe-comment/ (state, feedback create/update/delete, uploads,
  summary notes/recipients, submit), guarded by frontend login and a
  configurable FE user group; unauthorized callers get {"allowed":false}
- New models: tx_fecomment_summary (one open ticket per user, status
  open/sent) and tx_fecomment_feedback (url, RTE note, FAL attachments),
  both editable in the backend on the ticket storage page
- FeedbackApiMiddleware registered after frontend authentication (the
  frontend.user attribute does not exist earlier); uploads land in
  fileadmin/fe_comment/summary-<uid>/ with mime/extension check, 20 MB cap
- Submit sends one HTML mail (author block, items with attachment links,
  reply-to = FE user mail) to selected recipients with mailTo fallback,
  then closes the summary
- felogin wired React-compatible: felogin.pid=520 plus headless FeLogin
  JSON templates via site settings - felogin v14 and EXT:headless both
  claim templateRootPaths.10, the felogin.view.* settings feed exactly
  that index, so the structured JSON form (incl. __RequestToken) wins
- Read the sys_file_reference insert id before syncAttachmentCount():
  DBAL throws "no identity value" once the count UPDATE has run
- migrations: drop_fecomment_tables.php (repairs the no-uid tables,
  only drops when empty), check_feuser.php (login diagnosis),
  fec_login_test.sh / fec_api_test.sh (curl chains incl. CSRF token flow)
This commit is contained in:
orasche committed 2026-10-02 16:37:01 +02:00
1 parent 78af83d2e3
commit 872c6e715c
14 files changed
+842 -95

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
#
# fe_comment v2 (2026-10-02): server-side feedback with FE-user ownership.
# A summary is one visitor's note pad (open until submitted); feedback rows
# are its items. Written from the FRONTEND via plain inserts (no DataHandler
# available there) - TCA exists for backend read/edit access.
#
CREATE TABLE tx_fecomment_summary (
fe_user int(11) DEFAULT '0' NOT NULL,
status varchar(10) DEFAULT 'open' NOT NULL,
general_notes text,
recipients varchar(1024) DEFAULT '' NOT NULL,
sent_at int(11) DEFAULT '0' NOT NULL,
KEY feuser (fe_user, status)
);
CREATE TABLE tx_fecomment_feedback (
summary int(11) DEFAULT '0' NOT NULL,
fe_user int(11) DEFAULT '0' NOT NULL,
url varchar(2048) DEFAULT '' NOT NULL,
note mediumtext,
attachments int(11) DEFAULT '0' NOT NULL,
sorting int(11) DEFAULT '0' NOT NULL,
KEY summary (summary)
);