From 3b5ed20d18fa877b1ec06afbccc32a38e68b6bc8 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 08 Jan 2026 16:51:27 +0000
Subject: [PATCH] =Queue.js refactor
---
inc/managers/LoginManager.php | 177 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 100 insertions(+), 77 deletions(-)
diff --git a/inc/managers/LoginManager.php b/inc/managers/LoginManager.php
index f336e23..8b632ca 100644
--- a/inc/managers/LoginManager.php
+++ b/inc/managers/LoginManager.php
@@ -64,11 +64,18 @@
add_action('wp_login', [$this, 'handleSuccessfulLogin'], 10, 2);
add_filter( 'login_url', [$this, 'loginUrl'], 10, 3 );
+ add_filter( 'logout_url', [$this, 'logoutUrl'], 10, 2 );
// Allow other features to register handlers
do_action('jvbLoginManagerInit', $this);
add_action('user_register', array($this, 'saveRegistrationFields'), 999, 2);
+ add_filter('the_seo_framework_sitemap_exclude_ids', [$this, 'excludeLoginSitemap'], 10, 1);
}
+ public function excludeLoginSitemap(array $ids): array
+ {
+ $ids[] = $this->getLoginPage();
+ return $ids;
+ }
/**************************************************************************
* SETUP & CONFIGURATION
**************************************************************************/
@@ -297,6 +304,22 @@
}
return $login_url;
}
+
+ public function logoutUrl(string $logout_url, string $redirect): string
+{
+ // Build custom logout URL
+ $logout_url = site_url('/login/', 'login');
+ $logout_url = add_query_arg('action', 'logout', $logout_url);
+
+ if (!empty($redirect)) {
+ $logout_url = add_query_arg('redirect_to', urlencode($redirect), $logout_url);
+ }
+
+ // Add nonce for security
+ $logout_url = wp_nonce_url($logout_url, 'log-out');
+
+ return $logout_url;
+}
public function getLoginPage():int|false
{
return (int)get_option(BASE.'login_page');
@@ -849,99 +872,99 @@
ob_start();
?>
- document.addEventListener('DOMContentLoaded', () => {
- const form = document.querySelector('.login form');
- if (!form) return;
+document.addEventListener('DOMContentLoaded', async function () {
+ window.auth.subscribe(event => {
+ if (event === 'auth-loaded') {
+ const form = document.querySelector('.login form');
+ if (!form) return;
- if (!window.jvbForm) {
- console.error('jvbForm not loaded');
- return;
- }
-
- window.LoginController = new window.jvbForm();
- window.LoginController.registerForm(form, {
- autosave: false,
- endpoint: <?= "'{$action}'" ?>,
- formStatus: false,
- cache: false,
- });
-
- window.LoginController.subscribe((event, data) => {
- if (event === 'form-submit') {
- handleFormSubmission(data);
+ if (!window.jvbForm) {
+ console.error('jvbForm not loaded');
+ return;
}
- });
-
- async function handleFormSubmission(data) {
- let realFormData = data.fullData;
- const { formId, config, data: formData } = data;
-
-
- const form = config.element;
-
- const submit = form.querySelector('[type=submit]');
- let oldText = submit.textContent;
-
-
- window.LoginController.showFormStatus(formId, 'uploading');
-
- try {
- submit.disabled = true;
- submit.textContent = 'Loading...';
- const response = await fetch(`${jvbSettings.api}<?=($action === 'magic') ? $action : 'auth/'.$action?>`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'X-WP-Nonce': window.auth.getNonce()
- },
- body: JSON.stringify(realFormData)
+ window.LoginController = new window.jvbForm();
+ window.LoginController.registerForm(form, {
+ autosave: false,
+ endpoint: <?= "'{$action}'" ?>,
+ formStatus: false,
+ cache: false,
});
- const result = await response.json();
-
- // Handle errors
- if (!response.ok) {
- window.LoginController.showFormStatus(formId, 'error');
- window.LoginController.handleFormError(form, result);
- return;
+ window.LoginController.subscribe((event, data) => {
+ if (event === 'form-submit') {
+ handleFormSubmission(data);
}
+ });
- // Handle success
- window.LoginController.showFormStatus(formId, 'submitted');
- // Show success message briefly before redirect
- if (result.message) {
- window.LoginController.handleFormSuccess(form, result);
- }
+ async function handleFormSubmission(data) {
+ let realFormData = data.fullData;
+ const { formId, config, data: formData } = data;
- if (window.auth && typeof window.auth.handleLogin === 'function' && Object.hasOwn(result, 'auth')) {
- console.log('Awaiting Auth...');
- await window.auth.handleLogin(result.auth); // Pass the full result
- }
- // Handle redirect
- if (result.redirect) {
- setTimeout(() => {
- window.location.href = result.redirect;
- }, 200); // Brief delay to show success message
- }
+ const form = config.element;
- } catch (error) {
- console.error('Form submission error:', error);
- window.LoginController.showFormStatus(formId, 'error');
- window.LoginController.handleFormError(form, {
- message: 'Network error. Please check your connection and try again.',
- code: 'network_error'
+ const submit = form.querySelector('[type=submit]');
+ let oldText = submit.textContent;
+
+
+ window.LoginController.showFormStatus(formId, 'uploading');
+
+ try {
+ submit.disabled = true;
+ submit.textContent = 'Loading...';
+ const response = await window.auth.fetch(`${jvbSettings.api}auth/<?php echo $action; ?>`, {
+ method: 'POST',
+ body: JSON.stringify(realFormData)
});
- } finally {
- submit.textContent = oldText;
- submit.disabled = false;
+
+ const result = await response.json();
+
+ // Handle errors
+ if (!response.ok) {
+ window.LoginController.showFormStatus(formId, 'error');
+ window.LoginController.handleFormError(form, result);
+ return;
+ }
+
+ // Handle success
+ window.LoginController.showFormStatus(formId, 'submitted');
+
+ // Show success message briefly before redirect
+ if (result.message) {
+ window.LoginController.handleFormSuccess(form, result);
+ }
+
+ if (window.auth && typeof window.auth.handleLogin === 'function' && Object.hasOwn(result, 'auth')) {
+ console.log('Awaiting Auth...');
+ await window.auth.handleLogin(result.auth); // Pass the full result
+ }
+
+ // Handle redirect
+ if (result.redirect) {
+ setTimeout(() => {
+ window.location.href = result.redirect;
+ }, 100); // Brief delay to show success message
+ }
+
+ } catch (error) {
+ console.error('Form submission error:', error);
+ window.LoginController.showFormStatus(formId, 'error');
+ window.LoginController.handleFormError(form, {
+ message: 'Network error. Please check your connection and try again.',
+ code: 'network_error'
+ });
+ } finally {
+ submit.textContent = oldText;
+ submit.disabled = false;
+ }
}
}
-
});
+});
+
<?php
--
Gitblit v1.10.0