This commit is contained in:
Flatlogic Bot 2026-03-10 06:52:27 +00:00
parent 01edc11ccd
commit 1a71dc39b4
3 changed files with 159 additions and 63 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 KiB

View File

@ -13,7 +13,6 @@ if (isset($_GET['logout']) && $_GET['logout'] === '1') {
$adminError = '';
$adminSuccess = '';
$participantError = '';
try {
$adminCount = admin_count_users();
@ -79,32 +78,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
}
if ($loginType === 'participant_login') {
$email = strtolower(trim((string) ($_POST['email'] ?? '')));
$password = (string) ($_POST['password'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL) || $password === '') {
$participantError = 'Enter your registration email and password.';
} else {
try {
$stmt = db()->prepare('SELECT * FROM attendees WHERE email = ? AND deleted_at IS NULL LIMIT 1');
$stmt->execute([$email]);
$attendee = $stmt->fetch(PDO::FETCH_ASSOC);
if ($attendee && !empty($attendee['password']) && password_verify($password, $attendee['password'])) {
$_SESSION['user_id'] = (int) $attendee['id'];
header('Location: dashboard.php');
exit;
}
$participantError = 'Invalid email or password. If you have not registered yet, please use the webinar form.';
} catch (PDOException $e) {
error_log('Participant login failed: ' . $e->getMessage());
$participantError = 'Participant login is temporarily unavailable.';
}
}
}
}
?>
<!DOCTYPE html>
@ -112,8 +85,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login | Webinar Platform</title>
<meta name="description" content="Secure admin and attendee login for the webinar registration platform.">
<title>Admin Login | Webinar Platform</title>
<meta name="description" content="Secure admin login for the webinar registration platform.">
<meta name="robots" content="noindex, nofollow">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@ -150,7 +123,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
.shell {
width: 100%;
max-width: 1160px;
max-width: 760px;
margin: 0 auto;
}
.brand {
@ -171,7 +144,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
.grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-columns: 1fr;
gap: 24px;
align-items: start;
}
@ -307,9 +280,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<body>
<main class="shell">
<header class="brand">
<div class="eyebrow">Webinar access</div>
<h1 class="brand-name">Secure login for your webinar workspace</h1>
<p class="brand-copy">Use the admin area to manage registrations, edit attendee data, export CSV, and track daily signup trends. Attendees can still log in separately to view their webinar dashboard.</p>
<div class="eyebrow">Admin access</div>
<h1 class="brand-name">Secure admin login for your webinar workspace</h1>
<p class="brand-copy">Use the admin area to manage registrations, edit attendee data, export CSV, and track daily signup trends.</p>
</header>
<section class="grid" aria-label="Login options">
@ -375,35 +348,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</ul>
</article>
<article class="card">
<div class="eyebrow">Attendee</div>
<h2>Participant login</h2>
<p class="subtitle">Attendees can sign in here to view their webinar dashboard after registration.</p>
<?php if ($participantError !== ''): ?>
<div class="status error"><?php echo htmlspecialchars($participantError); ?></div>
<?php endif; ?>
<form method="POST" action="login.php" novalidate>
<input type="hidden" name="login_type" value="participant_login">
<div class="form-group">
<label for="participant_email">Email</label>
<input type="email" id="participant_email" name="email" placeholder="you@example.com" required>
</div>
<div class="form-group">
<label for="participant_password">Password</label>
<input type="password" id="participant_password" name="password" placeholder="Password from registration" required>
</div>
<button type="submit" class="btn">Open attendee dashboard</button>
</form>
<div class="actions">
<a class="text-link" href="index.php"> Back to homepage</a>
<a class="text-link" href="register.php">Need to register first?</a>
</div>
<p class="helper">Tip: if you changed static assets recently and do not see updates, hard refresh the page with Ctrl/Cmd + Shift + R.</p>
</article>
</section>
</main>
</body>

View File

@ -24857,3 +24857,155 @@ CLIENT -> SERVER: .
SERVER -> CLIENT: 250 Ok 0100019a55acff98-e8f29579-16c8-4a0a-b83b-c56569d4e862-000000
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 Bye
SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-D3TJB729I 43feS2xU8wYuWufOgHbc
CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app
SERVER -> CLIENT: 250-email-smtp.amazonaws.com
250-8BITMIME
250-STARTTLS
250-AUTH PLAIN LOGIN
250 Ok
CLIENT -> SERVER: STARTTLS
SERVER -> CLIENT: 220 Ready to start TLS
CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app
SERVER -> CLIENT: 250-email-smtp.amazonaws.com
250-8BITMIME
250-AUTH PLAIN LOGIN
250 Ok
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 VXNlcm5hbWU6
CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 334 UGFzc3dvcmQ6
CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 235 Authentication successful.
CLIENT -> SERVER: MAIL FROM:<support@flatlogic.com>
SERVER -> CLIENT: 250 Ok
CLIENT -> SERVER: RCPT TO:<a.sirotka@flatlogic.com>
SERVER -> CLIENT: 250 Ok
CLIENT -> SERVER: DATA
SERVER -> CLIENT: 354 End data with <CR><LF>.<CR><LF>
CLIENT -> SERVER: Date: Tue, 10 Mar 2026 06:42:12 +0000
CLIENT -> SERVER: To: a.sirotka@flatlogic.com
CLIENT -> SERVER: From: Flatlogic Team Customer Success <support@flatlogic.com>
CLIENT -> SERVER: Reply-To: support@flatlogic.com
CLIENT -> SERVER: Subject: Confirmation: You're Registered for Building Scalable Apps with AppWizzy
CLIENT -> SERVER: Message-ID: <bOdvPEctMmrrK17tl1r9dvL0lm7SaXwbz3Ec4v4UaI@vm-39074.dev.flatlogic.app>
CLIENT -> SERVER: X-Mailer: PHPMailer 6.6.3 (https://github.com/PHPMailer/PHPMailer)
CLIENT -> SERVER: MIME-Version: 1.0
CLIENT -> SERVER: Content-Type: multipart/alternative;
CLIENT -> SERVER: boundary="b1_bOdvPEctMmrrK17tl1r9dvL0lm7SaXwbz3Ec4v4UaI"
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: This is a multi-part message in MIME format.
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_bOdvPEctMmrrK17tl1r9dvL0lm7SaXwbz3Ec4v4UaI
CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: Webinar Registration Confirmation
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: You're Registered!
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: Hello Alesia,
CLIENT -> SERVER: Thank you for registering for the Building Scalable Apps with AppWizzy webinar.
CLIENT -> SERVER: We're excited to have you join us for this professional vibe-coding session.
CLIENT -> SERVER:
CLIENT -> SERVER: Webinar Details:
CLIENT -> SERVER: Wednesday, March 25, 2026 | 6PM CET | 12PM EDT | 9AM PDT
CLIENT -> SERVER:
CLIENT -> SERVER: You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.
CLIENT -> SERVER: Your personal webinar access link will be emailed to you 1 day before the event.
CLIENT -> SERVER:
CLIENT -> SERVER: Add to Calendar
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: &copy; 2025 AppWizzy. All rights reserved.
CLIENT -> SERVER: You can visit our website for more information.
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_bOdvPEctMmrrK17tl1r9dvL0lm7SaXwbz3Ec4v4UaI
CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii
CLIENT -> SERVER:
CLIENT -> SERVER: <!DOCTYPE html>
CLIENT -> SERVER: <html lang="en">
CLIENT -> SERVER: <head>
CLIENT -> SERVER: <meta charset="UTF-8">
CLIENT -> SERVER: <meta name="viewport" content="width=device-width, initial-scale=1.0">
CLIENT -> SERVER: <title>Webinar Registration Confirmation</title>
CLIENT -> SERVER: </head>
CLIENT -> SERVER: <body style="font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f4f4f4; color: #333; margin: 0; padding: 0;">
CLIENT -> SERVER: <table width="100%" border="0" cellspacing="0" cellpadding="0" style="background-color: #f4f4f4;">
CLIENT -> SERVER: <tr>
CLIENT -> SERVER: <td align="center">
CLIENT -> SERVER: <table width="600" border="0" cellspacing="0" cellpadding="0" style="background-color: #ffffff; margin: 20px auto; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);">
CLIENT -> SERVER: <!-- Header -->
CLIENT -> SERVER: <tr>
CLIENT -> SERVER: <td align="center" style="padding: 40px 20px; background: linear-gradient(135deg, #1a237e 0%, #673ab7 100%); border-radius: 10px 10px 0 0;">
CLIENT -> SERVER: <img src="http://vm-39074.dev.flatlogic.app/assets/pasted-20251030-095744-1b7c02ab.png" alt="AppWizzy Logo" style="height: 60px; margin-bottom: 20px;">
CLIENT -> SERVER: <h1 style="color: #ffffff; font-size: 28px; margin: 0; line-height: 1.2;">You're Registered!</h1>
CLIENT -> SERVER: </td>
CLIENT -> SERVER: </tr>
CLIENT -> SERVER: <!-- Body -->
CLIENT -> SERVER: <tr>
CLIENT -> SERVER: <td style="padding: 40px 30px;">
CLIENT -> SERVER: <h2 style="font-size: 22px; color: #1a237e;">Hello Alesia,</h2>
CLIENT -> SERVER: <p style="font-size: 16px; line-height: 1.6;">Thank you for registering for the <strong>Building Scalable Apps with AppWizzy</strong> webinar.</p>
CLIENT -> SERVER: <p style="font-size: 16px; line-height: 1.6;">We're excited to have you join us for this professional vibe-coding session.</p>
CLIENT -> SERVER: <div style="background-color: #f9f9f9; border-left: 4px solid #673ab7; padding: 15px 20px; margin: 20px 0;">
CLIENT -> SERVER: <p style="margin: 0; font-size: 16px;"><strong>Webinar Details:</strong></p>
CLIENT -> SERVER: <p style="margin: 10px 0 0; font-size: 16px;">Wednesday, March 25, 2026 | <strong>6PM CET</strong> | 12PM EDT | 9AM PDT</p>
CLIENT -> SERVER: </div>
CLIENT -> SERVER: <p style="font-size: 16px; line-height: 1.6;">You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.</p>
CLIENT -> SERVER: <p style="font-size: 16px; line-height: 1.6;"><strong>Your personal webinar access link will be emailed to you 1 day before the event.</strong></p>
CLIENT -> SERVER: <p style="text-align: center; margin-top: 30px;">
CLIENT -> SERVER: <a href="https://www.google.com/calendar/render?action=TEMPLATE&text=Building+Scalable+Apps+with+AppWizzy&dates=20260325T170000Z/20260325T180000Z&details=Professional+Vibe-Coding+Webinar.+Join+us+on+March+25th+at+6PM+CET+%7C+12PM+EDT+%7C+9AM+PDT+to+learn+the+fastest+way+to+go+from+an+idea+to+a+working+app+you+own.&location=Online&ctz=UTC" style="background: linear-gradient(135deg, #3f51b5 0%, #9c27b0 100%); color: #ffffff; padding: 12px 25px; text-decoration: none; border-radius: 8px; font-weight: bold;">Add to Calendar</a>
CLIENT -> SERVER: </p>
CLIENT -> SERVER: </td>
CLIENT -> SERVER: </tr>
CLIENT -> SERVER:
CLIENT -> SERVER: <!-- Footer -->
CLIENT -> SERVER: <tr>
CLIENT -> SERVER: <td align="center" style="padding: 20px; background-color: #f4f4f4; border-top: 1px solid #dddddd;">
CLIENT -> SERVER: <p style="margin: 0; color: #777;">&copy; 2025 AppWizzy. All rights reserved.</p>
CLIENT -> SERVER: <p style="margin: 5px 0 0; color: #777;">You can <a href="http://vm-39074.dev.flatlogic.app/" style="color: #3f51b5;">visit our website</a> for more information.</p>
CLIENT -> SERVER: </td>
CLIENT -> SERVER: </tr>
CLIENT -> SERVER: </table>
CLIENT -> SERVER: </td>
CLIENT -> SERVER: </tr>
CLIENT -> SERVER: </table>
CLIENT -> SERVER: </body>
CLIENT -> SERVER: </html>
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_bOdvPEctMmrrK17tl1r9dvL0lm7SaXwbz3Ec4v4UaI--
CLIENT -> SERVER:
CLIENT -> SERVER: .
SERVER -> CLIENT: 250 Ok 0100019cd67b57d0-a434978c-d797-48ec-bac0-cf2ac7b1173f-000000
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 Bye