The family gate (decisions 63/64, R-780): family members with their own logins, a permanent forwardAuth door per family app, anchored exceptions, min_controller
gates / gates (push) Successful in 27s
gates / gates (push) Successful in 27s
- internal/family: the family list (bcrypt, generated 4x4 passwords shown once) + 30-day sessions in family.json (0600, atomic); a reset (generation), a removal or a logout ends sessions at the next request. - internal/stacks/family_gate.go: family_gate / family_gate_except / min_controller in .felhom.yml; the door is written BEFORE the first start (install and a removed app's restore), a life record in app.yaml, reconciled by the gate loop; priority below the install hold, setup gate and sign-up block; every exception anchored ^/prefix(/|$) (finding F1). - internal/web/family_gate.go: forwardAuth /__felhom_gate/family (app cookie felhom_famgate, host-only, names a store session); /__family/start|login|logout on the dashboard host (session cookie felhom_family, Path=/__family); sign-in counted per visitor (clientIP) AND per name, short windows; the household's dashboard session vouches. RequireAuth never reads a family cookie. The "Család" card on the security page: add / new password / remove. Red-proofs RP-F1..RP-F7 (felhom.eu audits/family-gate-2026-10-02/A/). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -2508,5 +2508,34 @@
|
||||
"flash.offbox.enabled_all": "Off-site backup is on for every app.",
|
||||
"login.msg.empty_password": "Enter your password.",
|
||||
"login.msg.rate_limited": "Too many wrong tries from this address. Try again in a minute.",
|
||||
"login.msg.wrong_password": "Wrong password."
|
||||
"login.msg.wrong_password": "Wrong password.",
|
||||
"err.stacks.family_gate_failed": "The family gate could not be prepared, so the app was not installed: %s",
|
||||
"err.stacks.needs_newer_controller": "This app needs newer box software, so it was not installed: %s",
|
||||
"family_gate.page_title": "Family sign-in",
|
||||
"family_gate.page_body": "Open this app with your family name and password.",
|
||||
"family_gate.name": "Your name",
|
||||
"family_gate.password": "Your password",
|
||||
"family_gate.sign_in": "Sign in",
|
||||
"family_gate.sign_out": "Sign out",
|
||||
"family_gate.signed_in_note": "You are signed in with your family account.",
|
||||
"family_gate.msg.form_expired": "The form expired. Reload the page.",
|
||||
"family_gate.msg.locked": "Too many wrong tries. Try again in a few minutes.",
|
||||
"family_gate.msg.wrong": "Wrong name or password.",
|
||||
"family_gate.msg.signed_in": "You are signed in. Open the app again.",
|
||||
"family_gate.msg.signed_out": "You are signed out. The family apps ask you to sign in again.",
|
||||
"family_gate.msg.store_unreadable": "The family list cannot be read right now.",
|
||||
"family_gate.msg.bad_name": "A name is 1–32 characters: lower-case letters, digits, dot, dash or underscore.",
|
||||
"family_gate.msg.exists": "A family member with that name already exists.",
|
||||
"family_gate.msg.no_member": "No family member with that name.",
|
||||
"family_gate.card_title": "Family",
|
||||
"family_gate.card_desc": "Family members sign in to the family-gated apps with their own name and password. It does not open this dashboard.",
|
||||
"family_gate.add": "Add a family member",
|
||||
"family_gate.name_placeholder": "e.g. anna",
|
||||
"family_gate.reset": "New password",
|
||||
"family_gate.remove": "Remove",
|
||||
"family_gate.none": "No family members yet.",
|
||||
"family_gate.pw_once": "The password shows only now. Write it down, or give it to the family member:",
|
||||
"family_gate.confirm_remove": "Remove them? Their sign-ins end at once.",
|
||||
"family_gate.confirm_reset": "Give a new password? The old one stops at once.",
|
||||
"family_gate.error": "That did not work. Try again."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user