From fff721dd185f5b97f7ae7a6e64189e55887ff590 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 05 Jul 2026 18:36:57 +0000
Subject: [PATCH] =Cleaning up the Square integration (still a bit more to do yet). Also majorly overhauled /rest/ files to ignore a rest request 'user' paramater, and rely on get_current_user_id() instead.
---
inc/rest/PermissionHandler.php | 56 +++++++++++++-------------------------------------------
1 files changed, 13 insertions(+), 43 deletions(-)
diff --git a/inc/rest/PermissionHandler.php b/inc/rest/PermissionHandler.php
index 409d479..4c41989 100644
--- a/inc/rest/PermissionHandler.php
+++ b/inc/rest/PermissionHandler.php
@@ -30,23 +30,6 @@
);
}
- $requestedUserId = $request->get_param('user');
-
- // No user param specified - allow (controller will handle)
- if (empty($requestedUserId)) {
- return true;
- }
-
- $currentUserId = get_current_user_id();
-
- if ((int) $requestedUserId !== $currentUserId) {
- return new WP_Error(
- 'forbidden',
- 'You can only access your own resources',
- ['status' => 403]
- );
- }
-
return true;
}
@@ -330,6 +313,9 @@
}
if (!wp_verify_nonce($nonce, $action)) {
+ error_log('[PermissionHandler] Validating nonce....');
+ error_log('Nonce: '.print_r($nonce, true));
+ error_log('Action: '.print_r($action, true));
return new WP_Error(
'invalid_nonce',
'Invalid or expired security token',
@@ -345,36 +331,17 @@
*/
public static function verifyActionNonce(WP_REST_Request $request, string $actionPrefix, string $header = 'X-Action-Nonce'): bool|WP_Error
{
- $userId = $request->get_param('user') ?: get_current_user_id();
+ $userId = get_current_user_id();
+ if (!$userId) {
+ return false;
+ }
+
$action = $actionPrefix . $userId;
return self::verifyNonce($request, $action, $header);
}
/**
- * Combined permission check: user match + rate limit
- */
- public static function userMatchWithRateLimit(WP_REST_Request $request): bool|WP_Error
- {
- static $rateLimiter = null;
-
- if ($rateLimiter === null) {
- $rateLimiter = new RateLimiter();
- }
-
- // Check rate limit first
- if (!$rateLimiter->checkLimit($request)) {
- return new WP_Error(
- 'rate_limit',
- 'Too many requests. Please wait before trying again.',
- ['status' => 429]
- );
- }
-
- return self::userMatch($request);
- }
-
- /**
* Create a custom permission callback combining multiple checks
*
* Usage:
@@ -390,9 +357,11 @@
$check === 'admin' => self::isAdmin($request),
$check === 'verified' => self::isVerified($request),
$check === 'user' => self::userMatch($request),
+ $check === 'nonce' => self::verifyNonce($request),
is_array($check) && isset($check['role']) => self::hasRole($request, $check['role']),
is_array($check) && isset($check['roles']) => self::hasAnyRole($request, $check['roles']),
is_array($check) && isset($check['capability']) => self::hasCapability($request, $check['capability']),
+ is_array($check) && isset($check['actionNonce']) => self::verifyActionNonce($request, $check['actionNonce']),
is_callable($check) => $check($request),
default => true,
};
@@ -424,18 +393,19 @@
$check === 'admin' => self::isAdmin($request),
$check === 'verified' => self::isVerified($request),
$check === 'user' => self::userMatch($request),
+ $check === 'nonce' => self::verifyNonce($request),
is_array($check) && isset($check['role']) => self::hasRole($request, $check['role']),
+ is_array($check) && isset($check['roles']) => self::hasAnyRole($request, $check['roles']),
is_array($check) && isset($check['capability']) => self::hasCapability($request, $check['capability']),
+ is_array($check) && isset($check['actionNonce']) => self::verifyActionNonce($request, $check['actionNonce']),
is_callable($check) => $check($request),
default => false,
};
- // If it's a successful check (true), pass
if ($result === true) {
return true;
}
- // Track last error for reporting
if (is_wp_error($result)) {
$lastError = $result;
}
--
Gitblit v1.10.0