aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/auth-page.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-11 23:43:34 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-11 23:43:35 +0200
commitf6f107e02c7a4aa7326c9a82310a239327d81ed6 (patch)
tree2b7c891774460ab01593f17f490ed41fce1b5c91 /packages/meshbay-hub/src/meshbay_hub/static/auth-page.js
parent1667fdcb1a621296eefc5ed90d846c1f77715c76 (diff)
downloadmeshbay-f6f107e02c7a4aa7326c9a82310a239327d81ed6.tar.gz
feat(hub): tell the person at sign-up what the hub keeps and why
A line under the Register button: creating an account accepts the hub's terms of use, and the law requires the hub to keep the connection log (IP address, date, action) for one year, even after the account is deleted. It links to the legal pages of the hub in use, so a self-hosted hub shows its own operator's documents. A notice, not a checkbox: the account rests on the contract and the log on a legal obligation, so there is no consent to ask for, and one that blocks sign-up would be neither free nor withdrawable. legalUrl() moves to platform.js, shared by the sidebar and the form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/auth-page.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/auth-page.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/auth-page.js b/packages/meshbay-hub/src/meshbay_hub/static/auth-page.js
index 57db475..e014f61 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/auth-page.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/auth-page.js
@@ -571,6 +571,11 @@ export function RegisterPage() {
`;
}
+ // The legal line under the button is a notice, not a checkbox. The account
+ // is held under the terms (a contract) and the connection log under a legal
+ // obligation; neither rests on consent, and a box nobody may leave unticked
+ // would be asking for one that is not free (GDPR art. 7.4) and could not be
+ // withdrawn — the log is kept for its year whatever the person answers.
return html`
<${AuthShell}>
<div class="card login-card">
@@ -609,6 +614,10 @@ export function RegisterPage() {
<button type="submit" disabled=${loading || (captcha.enabled && !captcha.token)}>
${loading ? t('register.loading') : t('register.submit')}
</button>
+ <p class="register-legal">
+ ${t('register.legal_notice')}
+ <a href=${platform.legalUrl()} target="_blank" rel="noopener">${t('sidebar.legal')}</a>
+ </p>
</form>
<div class="login-footer">
${t('register.has_account')} <a href="#/login">${t('register.login_link')}</a>