From 772462eeca3002a1d52508aeba485aab2b4742ad Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 03 Mar 2026 19:06:19 +0000
Subject: [PATCH] =MAJOR OVERHAUL. Likely should have made a new branch ages ago. Key changes: Registrar.php is the base for custom post types, taxonomies, and user roles. Replaces JVB_CONTENT, JVB_TAXONOMY, and JVB_USER constants, eliminates most of Features.php (except for JVB_SITE, JVB_MEMBERSHIP), and has built in sanitizing and validation via sub-classes. Also started a major overhaul of the Schema output. Created a shit ton of property traits and classes to help sanitize and ensure proper data for different schema types. Still a bunch to do, but better to be starting committing changes here on this other branch.
---
inc/managers/LoginManager.php | 60 ++++++++++++++++++++++++++++++++++--------------------------
1 files changed, 34 insertions(+), 26 deletions(-)
diff --git a/inc/managers/LoginManager.php b/inc/managers/LoginManager.php
index 5a25159..5187724 100644
--- a/inc/managers/LoginManager.php
+++ b/inc/managers/LoginManager.php
@@ -1,11 +1,9 @@
<?php
namespace JVBase\managers;
-use JVBase\blocks\CustomBlocks;
use JVBase\forms\TaxonomySelector;
-use JVBase\meta\MetaManager;
-use JVBase\meta\MetaForm;
-use JVBase\managers\AjaxRateLimiter;
+use JVBase\meta\Form;
+
use JVBase\utility\Features;
use WP_Error;
use WP_User;
@@ -17,7 +15,7 @@
class LoginManager
{
protected Features $siteFeatures;
- protected ?MetaForm $metaForm = null;
+ protected ?Form $form = null;
protected Cache $cache;
@@ -63,6 +61,7 @@
// Login success handling
add_action('wp_login', [$this, 'handleSuccessfulLogin'], 10, 2);
+ add_filter('lostpassword_url', [$this, 'resetPasswordUrl'], 10, 2);
add_filter( 'login_url', [$this, 'loginUrl'], 10, 3 );
add_filter( 'logout_url', [$this, 'logoutUrl'], 10, 2 );
// Allow other features to register handlers
@@ -308,18 +307,26 @@
}
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);
+ {
+ // 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);
+ if (!empty($redirect)) {
+ $logout_url = add_query_arg('redirect_to', urlencode($redirect), $logout_url);
+ }
+
+ // Add nonce for security
+ return wp_nonce_url($logout_url, 'log-out');
}
+ public function resetPasswordUrl(string $url, string $redirect):string
+ {
+ error_log('reset Password Url:'.print_r($url, true));
+ error_log('reset password redirect: '.print_r($redirect, true));
- // Add nonce for security
- return wp_nonce_url($logout_url, 'log-out');
-}
+ return str_replace('wp_login.php', 'login/', $url);
+
+ }
public function getLoginPage():int|false
{
return (int)get_option(BASE.'login_page');
@@ -406,12 +413,6 @@
wp_redirect(esc_attr($_GET['redirect_to'] ?? get_home_url()));
exit;
}
- if (in_array($this->action, ['rp', 'resetpass']) && !is_user_logged_in()) {
- wp_redirect(wp_login_url());
- exit;
- } elseif (is_user_logged_in()) {
- wp_redirect(get_home_url(null, '/dash/'));
- }
$this->setupLabels();
$this->setupFields();
$this->setupTitle();
@@ -438,11 +439,9 @@
protected function customStyles():void
{
$logo = get_theme_mod('custom_logo');
- $small = $large = '';
if ($logo) {
- $small = wp_get_attachment_image_src($logo, 'medium')[0];
- $large = wp_get_attachment_image_src($logo, 'large')[0];
-
+ $small = wp_get_attachment_image_src($logo, 'medium')[0]??'';
+ $large = wp_get_attachment_image_src($logo, 'large')[0]??'';
}
echo '<style>
.login header,
@@ -533,7 +532,6 @@
protected function renderForms():void
{
- $this->metaForm = new MetaForm();
$form = $this->action.'form';
?>
<section class="login-box col btw">
@@ -552,7 +550,7 @@
do_action('jvb_add_token_inputs', $this->action);
foreach ($this->fields as $name => $config) {
- $this->metaForm->render($name, '', $config);
+ echo Form::render($name, '', $config);
}
$this->maybeTurnstile();
@@ -807,6 +805,7 @@
'successDescription' => JVB_LOGIN['forgot_password']['success']['description'] ?? ['Check your email for reset instructions'],
];
case 'resetpass':
+ case 'rp':
return [
'title' => JVB_LOGIN['reset_pass']['title'] ?? 'Reset Your Password',
'description' => JVB_LOGIN['reset_pass']['description'] ?? [],
@@ -874,6 +873,7 @@
$has_turnstile = Features::hasIntegration('cloudflare');
ob_start();
+
?>
document.addEventListener('DOMContentLoaded', async function () {
@@ -901,6 +901,14 @@
const formData = new FormData(formElement);
const formObject = Object.fromEntries(formData.entries());
+ let params = new URLSearchParams(window.location.search);
+ if (params.has('key')) {
+ formObject['key'] = params.get('key');
+ }
+ if (params.has('login')) {
+ formObject['login'] = params.get('login');
+ }
+
// Add redirect_to from URL
if (redirectTo) {
formObject.redirect_to = redirectTo;
--
Gitblit v1.10.0