forked from retoor/devplacepy
Gate blocked actions behind an in-place terms acceptance dialog
A member whose account has not accepted the terms in force now gets one dialog on the action they attempted instead of a dead-end refusal. The client handler is the single TermsGate, wired into every Http POST helper so the four optimistic controllers cannot swallow the gate into an error flash, and the original request is replayed once the acceptance is recorded. Reading the site and deleting an account stay unblocked. apple.md is the source brief the compliance research documents reference. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,7 @@ import { IssueAttachments } from "./IssueAttachments.js";
|
||||
import { PlanningGenerator } from "./PlanningGenerator.js";
|
||||
import { MediaGallery } from "./MediaGallery.js";
|
||||
import { ReportDialog } from "./ReportDialog.js";
|
||||
import { TermsGate } from "./TermsGate.js";
|
||||
import WindowManager from "./components/WindowManager.js";
|
||||
import { ContainerTerminalManager } from "./ContainerTerminalManager.js";
|
||||
import { PubSubClient } from "./PubSubClient.js";
|
||||
@@ -69,6 +70,7 @@ class Application {
|
||||
this.toast = document.createElement("dp-toast");
|
||||
this.lightbox = document.createElement("dp-lightbox");
|
||||
document.body.append(this.dialog, this.contextMenu, this.toast, this.lightbox);
|
||||
this.termsGate = new TermsGate(this.dialog);
|
||||
this.modals = new ModalManager();
|
||||
this.forms = new FormManager();
|
||||
this.votes = new VoteManager();
|
||||
|
||||
Reference in New Issue
Block a user