Changeset f4b7b6a in Klonkt for src/routes/auth.js


Ignore:
Timestamp:
06/19/2026 09:31:54 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
1e2e9e7
Parents:
1080d14
Message:

feat(auth): public login = Google only; admin login hidden at /auth/admin

  • /auth/login shows visitors only "Sign in with Google" (listeners/fans).
  • Admin login (username/password) moved to hidden /auth/admin, linked from nowhere. POST errors + password-reset success redirect to /auth/admin.
  • gerr=admin notice (Google with admin address) now links to /auth/admin.

Co-Authored-By: Claude <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/auth.js

    r1080d14 rf4b7b6a  
    4444}
    4545
    46 // ==================== LOGIN (beheerder = wachtwoord) ====================
     46// ==================== LOGIN ====================
     47// Publieke loginpagina: voor BEZOEKERS alleen Google-login (luisteraars/fans).
     48// De beheerders-login (wachtwoord) staat hier bewust NIET — die zit verborgen op
     49// /auth/admin (zie hieronder), zodat de admin-login niet zichtbaar is op de plek
     50// waar bezoekers heen worden gestuurd.
    4751router.get('/login', (req, res) => {
    4852  const next = safeNext(req.query.next) || '';
     
    5660    success: req.query.success || null,
    5761    username: '',
     62    adminLogin: false,
    5863    googleReady: fanLoginReady(),
     64    next,
     65  });
     66});
     67
     68// Verborgen beheerders-login (gebruikersnaam + wachtwoord). Nergens in de UI
     69// gelinkt — de beheerder navigeert hier rechtstreeks naartoe (/auth/admin).
     70router.get('/admin', (req, res) => {
     71  const next = safeNext(req.query.next) || '';
     72  if (req.session.user) return res.redirect(next || '/');
     73  if (isSetupMode()) return res.redirect('/auth/register' + (next ? '?next=' + encodeURIComponent(next) : ''));
     74  renderPage(req, res, 'pages/auth-login', {
     75    pageTitle: 'Beheerder inloggen',
     76    bodyClass: 'on-special on-auth',
     77    error: req.query.error || null,
     78    gerr: null,
     79    success: req.query.success || null,
     80    username: '',
     81    adminLogin: true,
     82    googleReady: false,
    5983    next,
    6084  });
     
    6589  const next = safeNext(req.body.next) || '';
    6690
     91  // Foutweergave op de (verborgen) beheerders-loginpagina: toon het wachtwoord-
     92  // formulier opnieuw (adminLogin:true), niet de Google-only publieke pagina.
    6793  const renderErr = (error, status = 400) => {
    6894    res.status(status);
    6995    return renderPage(req, res, 'pages/auth-login', {
    70       pageTitle: 'Inloggen', bodyClass: 'on-special',
    71       error, success: null, username: username || '', googleReady: fanLoginReady(), next,
     96      pageTitle: 'Beheerder inloggen', bodyClass: 'on-special on-auth',
     97      error, gerr: null, success: null, username: username || '',
     98      adminLogin: true, googleReady: false, next,
    7299    });
    73100  };
     
    229256      updated_at = CURRENT_TIMESTAMP WHERE id = ?
    230257  `).run(hash, row.id);
    231   res.redirect('/auth/login?success=' + encodeURIComponent('Wachtwoord gereset — log nu in.'));
     258  res.redirect('/auth/admin?success=' + encodeURIComponent('Wachtwoord gereset — log nu in.'));
    232259});
    233260
Note: See TracChangeset for help on using the changeset viewer.