<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Administración de Condominios</title>

  <!-- Google Identity Services -->
  <script src="https://accounts.google.com/gsi/client" async defer></script>

  <style>
    body {
      font-family: 'Segoe UI', sans-serif;
      background: #f4f6f9;
      margin: 0;
      padding: 0;
    }
    header {
      background: #0066cc;
      color: white;
      padding: 1rem;
      text-align: center;
    }
    main {
      padding: 2rem;
      max-width: 700px;
      margin: 0 auto;
    }
    .button {
      padding: 10px 20px;
      background: #0066cc;
      color: white;
      border: none;
      border-radius: 6px;
      cursor: pointer;
    }
    .card {
      background: white;
      border-radius: 8px;
      padding: 1rem;
      margin-top: 1rem;
      box-shadow: 0 1px 4px rgba(0,0,0,0.1);
    }
    pre {
      background: #eee;
      padding: 10px;
      border-radius: 6px;
      overflow-x: auto;
    }
  </style>
</head>
<body>

  <header>
    <h1>Administración de Condominios</h1>
  </header>

  <main>
    <div id="login-section">
      <div id="g_id_onload"
           data-client_id="202523854660-pi2qf79fnfr9663i3jc24hrch2bmk5bl.apps.googleusercontent.com"
           data-callback="onSignIn"></div>
      <div class="g_id_signin" data-type="standard"></div>
    </div>

    <div id="app" style="display:none;">
      <button class="button" onclick="loadPropietarios()">Listar Propietarios</button>
      <div id="result" class="card"></div>
    </div>
  </main>

  <script>
    const API_URL = "https://script.google.com/macros/s/AKfycbyHdDlD9jIvA1aQgdwXPWqWuUDVC8mjVg_-c4An0rSCFvWmol9bk0T4Qt4oAuTbbuojzQ/exec";
    let idToken = null;
    let userInfo = null;

    function onSignIn(response) {
      idToken = response.credential;
      const base64Url = idToken.split('.')[1];
      const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
      const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
          return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
      }).join(''));
      userInfo = JSON.parse(jsonPayload);
      document.getElementById('login-section').style.display = 'none';
      document.getElementById('app').style.display = 'block';
      document.querySelector('header h1').textContent =
        "Bienvenido, " + (userInfo.name || userInfo.email);
    }

    async function loadPropietarios() {
      const res = await fetch(API_URL, {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({
          action: 'listPropietarios',
          id_token: idToken
        })
      });
      const data = await res.json();
      document.getElementById('result').innerHTML =
        '<pre>' + JSON.stringify(data, null, 2) + '</pre>';
    }
  </script>

</body>
</html>

Alexa Robertson

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.