Changeset 247988e in Klonkt for src/views


Ignore:
Timestamp:
06/19/2026 09:55:26 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
f33b24a
Parents:
535f955
Message:

feat(auth): admin can link Google and use it to log in

  • Account → "Sign in with Google": link/unlink your Google account (/auth/google/link, requireAuth → stores google_sub on own account).
  • Google callback: link mode alongside login mode. An admin may log in with Google ONLY if their google_sub is linked and matches (otherwise "Google = never admin" rule holds). Unlinking requires a password (no lockout).
  • Admin notice on the login page explains the link route.

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

Location:
src/views/pages
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/account.ejs

    r535f955 r247988e  
    132132    </form>
    133133  </section>
     134
     135  <% if (typeof googleAvailable !== 'undefined' && googleAvailable) { %>
     136  <section class="ax-card">
     137    <div class="ax-card-title">Inloggen met Google</div>
     138    <% if (typeof googleLinked !== 'undefined' && googleLinked) { %>
     139      <p class="ax-tagline" style="margin:0 0 1rem">✓ Je Google-account is gekoppeld — je kunt ook met Google inloggen.</p>
     140      <form action="/account/google/unlink" method="post">
     141        <button type="submit" class="ax-btn">Google ontkoppelen</button>
     142      </form>
     143    <% } else { %>
     144      <p class="ax-tagline" style="margin:0 0 1rem">Koppel je Google-account zodat je voortaan ook met één klik via Google kunt inloggen (naast je wachtwoord).</p>
     145      <a href="/auth/google/link" class="ax-btn ax-btn-primary" data-full-load>Koppel Google-account</a>
     146    <% } %>
     147  </section>
     148  <% } %>
    134149  <% } else { %>
    135150  <section class="ax-card">
  • src/views/pages/auth-login.ejs

    r535f955 r247988e  
    1313      admin: { icon: '🔐', title: 'Dit is een beheerders-account',
    1414        body: 'Je logde in met Google, maar dit e-mailadres hoort bij de beheerder van deze site. Inloggen met Google is alleen voor luisteraars/fans — beheerders gebruiken altijd hun wachtwoord (zo kan een Google-login nooit per ongeluk beheerrechten geven).',
    15         list: ['<strong>Ben je de beheerder?</strong> <a href="/auth/admin">Log in met je gebruikersnaam + wachtwoord</a>.', '<strong>Wil je als fan inloggen?</strong> Gebruik een <strong>ander Google-account</strong> (niet je beheerdersadres).'] },
     15        list: ['<strong>Ben je de beheerder?</strong> <a href="/auth/admin">Log in met je gebruikersnaam + wachtwoord</a>.', '<strong>Wil je voortaan met Google inloggen?</strong> Log eerst in met wachtwoord en <strong>koppel je Google-account</strong> onder Account → daarna werkt Google-login ook voor jou.', '<strong>Wil je als fan inloggen?</strong> Gebruik een <strong>ander Google-account</strong> (niet je beheerdersadres).'] },
    1616      session: { icon: '⏱️', title: 'Login afgebroken', body: 'De Google-login is afgebroken of de sessie was verlopen. Probeer het gewoon opnieuw.' },
    1717      email: { icon: '✉️', title: 'Geen geverifieerd e-mailadres', body: 'Je Google-account heeft geen geverifieerd e-mailadres. Verifieer je adres bij Google.' },
Note: See TracChangeset for help on using the changeset viewer.