Changeset 09ecc5f in Klonkt


Ignore:
Timestamp:
06/19/2026 10:03:52 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
f83ccf3
Parents:
f33b24a
Message:

ui(admin): Google login on its own Admin page

  • New page /admin/settings/google (own view admin-google.ejs) with the complete Google OAuth config + step-by-step guide + redirect URI.
  • Settings page now shows only a compact "Set up Google login →" card.
  • Link "🔑 Google login" added in the Admin dashboard.

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

Location:
src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-settings.js

    rf33b24a r09ecc5f  
    139139});
    140140
     141// Google-login op een eigen Beheer-pagina (los van de algemene instellingen).
     142router.get('/google', requireGod, (req, res) => {
     143  renderPage(req, res, 'pages/admin-google', {
     144    pageTitle: 'Google-login',
     145    bodyClass: 'on-admin',
     146    google: {
     147      configured: googleConfigured(),
     148      redirectUri: redirectUri(),
     149      clientId: currentClientId(),
     150      secretSet: clientSecretSet(),
     151    },
     152    success: req.query.success || null,
     153    error: req.query.error || null,
     154  });
     155});
     156
    141157// Google-login (luisteraars) configureren — Client ID + Secret in app_settings.
    142158// De redirect-URI leiden we af van PUBLIC_BASE_URL (zie config/google.js).
  • src/views/pages/admin-settings.ejs

    rf33b24a r09ecc5f  
    129129  <% } %>
    130130
    131   <%# Google-login voor luisteraars (reageren) — per-site eigen Google-client. %>
     131  <%# Google-login staat op een eigen Beheer-pagina (compacte link hier). %>
    132132  <section class="set-card" style="margin-top:1rem">
    133133    <h2>Google-login (luisteraars)</h2>
    134     <p class="set-help">Laat bezoekers met Google inloggen om te reageren — met je <strong>eigen</strong>
    135       Google Cloud-client. Maak er een aan op
    136       <a href="https://console.cloud.google.com/apis/credentials" target="_blank" rel="noopener">console.cloud.google.com</a>
    137       (OAuth client-ID, type "Web application").
     134    <p class="set-help">Laat bezoekers met Google inloggen om te reageren — met je eigen Google Cloud-client.
    138135      <% if (google && google.configured) { %><strong>Status: ingesteld&nbsp;✓</strong><% } else { %>Nog niet ingesteld.<% } %></p>
    139 
    140     <details class="set-google-guide">
    141       <summary>Hoe stel ik dit in? (stap voor stap)</summary>
    142       <ol class="set-google-steps">
    143         <li>Ga naar de <a href="https://console.cloud.google.com/" target="_blank" rel="noopener">Google Cloud Console</a> en maak (of kies) een project.</li>
    144         <li><strong>APIs &amp; Services → OAuth consent screen</strong>: User type <strong>External</strong>. Voeg de scopes <code>email</code>, <code>profile</code> en <code>openid</code> toe. (In testmodus: voeg jezelf toe als testgebruiker.)</li>
    145         <li><strong>APIs &amp; Services → Credentials → Create credentials → OAuth client ID</strong>, type <strong>Web application</strong>.</li>
    146         <li>Bij <strong>Authorized redirect URIs</strong>: plak de redirect-URI hieronder (moet <strong>exact</strong> matchen).</li>
    147         <li>Kopieer de <strong>Client ID</strong> + <strong>Client Secret</strong> die je krijgt naar de velden hieronder en klik Opslaan.</li>
    148       </ol>
    149       <p class="set-help" style="margin:.5rem 0 0"><strong>Let op:</strong> je hoeft <strong>geen API's aan te zetten</strong> — "Google Cloud APIs", People API e.d. zijn <em>niet</em> nodig. Inloggen werkt via OpenID Connect (alleen het toestemmingsscherm + de OAuth-client).</p>
    150     </details>
    151 
    152     <% if (google && google.redirectUri) { %>
    153       <p class="set-help" style="margin-bottom:.7rem">Zet deze <strong>exacte</strong> redirect-URI in je Google-client
    154         (Authorized redirect URIs):<br><code style="user-select:all"><%= google.redirectUri %></code></p>
    155     <% } else { %>
    156       <p class="set-help" style="color:var(--accent)">Stel eerst <code>PUBLIC_BASE_URL</code> in — daar wordt de redirect-URI van afgeleid.</p>
    157     <% } %>
    158 
    159     <form method="post" action="/admin/settings/google" class="set-form">
    160       <label class="set-field">
    161         <span>Client ID</span>
    162         <input type="text" name="google_client_id" value="<%= google ? google.clientId : '' %>" placeholder="123-abc.apps.googleusercontent.com" autocomplete="off">
    163       </label>
    164       <label class="set-field">
    165         <span>Client Secret <% if (google && google.secretSet) { %><small style="font-weight:400">— ingesteld; leeg laten = ongewijzigd</small><% } %></span>
    166         <input type="password" name="google_client_secret" placeholder="<%= (google && google.secretSet) ? '•••••••• (ingesteld)' : 'GOCSPX-…' %>" autocomplete="off">
    167       </label>
    168       <div style="display:flex; gap:.5rem; flex-wrap:wrap">
    169         <button type="submit" class="btn btn-primary">Opslaan</button>
    170         <% if (google && (google.clientId || google.secretSet)) { %>
    171           <button type="submit" name="clear" value="1" class="btn">Loskoppelen</button>
    172         <% } %>
    173       </div>
    174     </form>
    175     <% if (typeof premiumEnabled !== 'undefined' && premiumEnabled && !(premium && premium.premium)) { %>
    176       <p class="set-help" style="margin-top:.7rem; color:var(--accent)">Premium-laag staat aan zonder Patreon — de Google-knop blijft verborgen tot premium ontgrendeld is.</p>
    177     <% } %>
     136    <div class="set-actions"><a href="/admin/settings/google" class="btn btn-primary">Google-login instellen &rarr;</a></div>
    178137  </section>
    179138
  • src/views/pages/admin.ejs

    rf33b24a r09ecc5f  
    3939      <a href="/admin/shows" class="btn">📅 Agenda</a>
    4040    <% } %>
     41    <a href="/admin/settings/google" class="btn">🔑 Google-login</a>
    4142    <a href="/admin/updates" class="btn">🔄 Updates</a>
    4243  </nav>
Note: See TracChangeset for help on using the changeset viewer.