Changeset 24cdcc6 in Klonkt
- Timestamp:
- 06/23/2026 02:11:51 PM (3 months ago)
- Branches:
- main
- Children:
- 8f2f97c
- Parents:
- 3af8fa3
- Location:
- src
- Files:
-
- 3 edited
-
routes/auth.js (modified) (3 diffs)
-
services/i18n.js (modified) (3 diffs)
-
views/pages/auth-register.ejs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/auth.js
r3af8fa3 r24cdcc6 17 17 } 18 18 import { mailerConfigured, sendMail } from '../config/mailer.js'; 19 import { resolveLang, t } from '../services/i18n.js'; 20 import { setSetting } from '../services/SettingsService.js'; 19 21 20 22 const router = express.Router(); … … 124 126 if (!isSetupMode()) return res.redirect('/auth/login' + (next ? '?next=' + encodeURIComponent(next) : '')); 125 127 renderPage(req, res, 'pages/auth-register', { 126 pageTitle: 'Beheerder aanmaken', bodyClass: 'on-special',127 error: null, username: '', email: '', next,128 pageTitle: t(resolveLang(req), 'setup.title'), bodyClass: 'on-special', 129 error: null, username: '', email: '', siteName: '', next, 128 130 }); 129 131 }); 130 132 131 133 router.post('/register', registerLimiter, (req, res) => { 132 const { username, email, password } = req.body;134 const { username, email, password, siteName } = req.body; 133 135 const next = safeNext(req.body.next) || ''; 134 136 const renderErr = (error) => renderPage(req, res, 'pages/auth-register', { 135 pageTitle: 'Beheerder aanmaken', bodyClass: 'on-special',136 error, username: username || '', email: email || '', next,137 pageTitle: t(resolveLang(req), 'setup.title'), bodyClass: 'on-special', 138 error, username: username || '', email: email || '', siteName: siteName || '', next, 137 139 }); 138 140 … … 155 157 156 158 // Persoonlijke site auto-aanmaken (single-tenant-ombouw volgt later). 159 // Setup-wizard: sitenaam + taal komen uit het formulier; taal = de taal waarin 160 // de bezoeker de wizard invulde (resolveLang) en wordt meteen de site-standaard. 157 161 if (!db.prepare('SELECT 1 FROM sites LIMIT 1').get()) { 158 162 const siteId = uuid(); 163 const lang = resolveLang(req); 164 const title = (siteName || '').trim().slice(0, 80) || (username + "'s Site"); 159 165 db.prepare(` 160 166 INSERT INTO sites (id, slug, title, description, owner_id, palette, accent, language) 161 VALUES (?, ?, ?, ?, ?, ' sage', '#c2410c', 'nl')162 `).run(siteId, username.toLowerCase(), username + "'s Site", 'Welkom', userId);167 VALUES (?, ?, ?, ?, ?, 'klonkt', '#e8b04b', ?) 168 `).run(siteId, username.toLowerCase(), title, '', userId, lang); 163 169 db.prepare(`INSERT INTO site_members (site_id, user_id, role) VALUES (?, ?, 'admin')`).run(siteId, userId); 170 try { setSetting('default_lang', lang); } catch (e) { /* niet fataal */ } 164 171 } 165 172 -
src/services/i18n.js
r3af8fa3 r24cdcc6 90 90 'auth.create_admin': 'Beheerder aanmaken', 91 91 'auth.reg_intro': 'Eerste keer opzetten — maak je beheerdersaccount aan. Dit kan maar één keer.', 92 'setup.title': 'Stel je Klonkt in', 93 'setup.intro': 'Welkom! Even je site klaarzetten — dit duurt een minuutje. Kies eerst je taal.', 94 'setup.lang_label': 'Taal', 95 'setup.f_sitename': 'Naam van je site', 96 'setup.sitename_ph': 'bijv. jouw artiestennaam', 97 'setup.submit': 'Mijn site aanmaken', 92 98 'auth.f_username': 'Gebruikersnaam (3-32 tekens, letters/cijfers/_-)', 93 99 'auth.f_email': 'E-mail', … … 1074 1080 'auth.create_admin': 'Create admin', 1075 1081 'auth.reg_intro': 'First-time setup — create your admin account. This can only be done once.', 1082 'setup.title': 'Set up your Klonkt', 1083 'setup.intro': 'Welcome! Let’s get your site ready — it takes a minute. Pick your language first.', 1084 'setup.lang_label': 'Language', 1085 'setup.f_sitename': 'Your site’s name', 1086 'setup.sitename_ph': 'e.g. your artist name', 1087 'setup.submit': 'Create my site', 1076 1088 'auth.f_username': 'Username (3-32 chars, letters/digits/_-)', 1077 1089 'auth.f_email': 'Email', … … 2054 2066 'auth.create_admin': 'Administrator anlegen', 2055 2067 'auth.reg_intro': 'Ersteinrichtung — lege dein Administrator-Konto an. Das geht nur einmal.', 2068 'setup.title': 'Richte dein Klonkt ein', 2069 'setup.intro': 'Willkommen! Lass uns deine Seite einrichten — dauert nur eine Minute. Wähle zuerst deine Sprache.', 2070 'setup.lang_label': 'Sprache', 2071 'setup.f_sitename': 'Name deiner Seite', 2072 'setup.sitename_ph': 'z. B. dein Künstlername', 2073 'setup.submit': 'Meine Seite erstellen', 2056 2074 'auth.f_username': 'Benutzername (3-32 Zeichen, Buchstaben/Ziffern/_-)', 2057 2075 'auth.f_email': 'E-Mail', -
src/views/pages/auth-register.ejs
r3af8fa3 r24cdcc6 1 1 <div class="container auth-page"> 2 <h1><%= t('auth.create_admin') %></h1> 3 <p class="auth-intro"><%= t('auth.reg_intro') %></p> 2 <h1><%= t('setup.title') %></h1> 3 <p class="auth-intro"><%= t('setup.intro') %></p> 4 5 <div class="setup-lang" style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 20px"> 6 <span style="opacity:.7;font-size:.9rem"><%= t('setup.lang_label') %>:</span> 7 <% (typeof langs !== 'undefined' ? langs : []).forEach(function(L){ %> 8 <a href="/lang/<%= L.code %>?r=/auth/register" 9 style="padding:5px 13px;border-radius:8px;text-decoration:none;font-weight:600;font-size:.9rem;border:1px solid <%= L.active ? 'var(--accent)' : 'var(--rule, #2b3140)' %>;color:<%= L.active ? 'var(--accent)' : 'inherit' %>"><%= L.name %></a> 10 <% }) %> 11 </div> 12 4 13 <% if (error) { %><div class="alert alert-error"><%= error %></div><% } %> 5 14 <form method="post" action="/auth/register" class="auth-form"> … … 8 17 <% } %> 9 18 <label> 19 <span><%= t('setup.f_sitename') %></span> 20 <input type="text" name="siteName" value="<%= typeof siteName !== 'undefined' ? siteName : '' %>" required autofocus maxlength="80" placeholder="<%= t('setup.sitename_ph') %>"> 21 </label> 22 <label> 10 23 <span><%= t('auth.f_username') %></span> 11 <input type="text" name="username" value="<%= username %>" required auto focus autocomplete="username" pattern="[a-zA-Z0-9_-]{3,32}">24 <input type="text" name="username" value="<%= username %>" required autocomplete="username" pattern="[a-zA-Z0-9_-]{3,32}"> 12 25 </label> 13 26 <label> … … 19 32 <input type="password" name="password" required minlength="8" autocomplete="new-password"> 20 33 </label> 21 <button type="submit" class="btn btn-primary"><%= t(' auth.create_admin') %></button>34 <button type="submit" class="btn btn-primary"><%= t('setup.submit') %></button> 22 35 </form> 23 36 </div>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)