Changeset 7c44c12 in Klonkt for src/routes
- Timestamp:
- 06/24/2026 01:45:21 PM (3 months ago)
- Branches:
- main
- Children:
- de3d24b
- Parents:
- a885afc
- File:
-
- 1 edited
-
src/routes/account.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/account.js
ra885afc r7c44c12 124 124 125 125 // ==================== UPDATE BIO ==================== 126 const RESERVED_USERNAMES = new Set(['admin', 'account', 'auth', 'login', 'register', 'logout', 'user', 'users', 'api', 'fediverse', 'posts', 'media', 'audio', 'assets', 'cirkel', 'authorize_interaction']); 127 126 128 router.post('/profile', requireAuth, (req, res) => { 127 129 const bio = (req.body.bio || '').toString().slice(0, 500).trim(); 130 131 // Username (login + display name; does NOT affect the fediverse handle, which 132 // is the site slug). Validate: format + reserved + unique (case-insensitive). 133 const username = (req.body.username || '').toString().trim(); 134 if (username && username !== req.session.user.username) { 135 if (!/^[A-Za-z0-9_-]{2,30}$/.test(username)) { 136 return res.redirect('/account?error=' + encodeURIComponent('Gebruikersnaam: 2-30 tekens; letters, cijfers, _ en - .')); 137 } 138 if (RESERVED_USERNAMES.has(username.toLowerCase())) { 139 return res.redirect('/account?error=' + encodeURIComponent('Die gebruikersnaam is gereserveerd.')); 140 } 141 const uTaken = db.prepare('SELECT 1 FROM users WHERE LOWER(username) = LOWER(?) AND id != ?').get(username, req.session.user.id); 142 if (uTaken) { 143 return res.redirect('/account?error=' + encodeURIComponent('Die gebruikersnaam is al in gebruik.')); 144 } 145 db.prepare('UPDATE users SET username = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(username, req.session.user.id); 146 req.session.user.username = username; 147 } 128 148 129 149 // Email (optionally also changed). Validation: valid format + not already in use
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)