From a8ff85042ffbfe94b678fd818c02deb613bfd116 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 07 Aug 2026 20:42:54 +0000
Subject: [PATCH] =Continuing on with Integrations setup. Working on PostMark now
---
inc/integrations/OAuth.php | 41 +++++++++++++++++++++++++++--------------
1 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/inc/integrations/OAuth.php b/inc/integrations/OAuth.php
index 3bc410c..dcf89aa 100644
--- a/inc/integrations/OAuth.php
+++ b/inc/integrations/OAuth.php
@@ -11,7 +11,6 @@
trait OAuth
{
use _Base, Admin;
- protected bool $hasOAuth = true;
protected OAuthURLs $oauth;
/**
* Child classes must set this (e.g. 'https://api.example.com/v1/')
@@ -21,7 +20,17 @@
protected int $oauthTTL = 300;
protected array $oathScopes = [];
+ protected ?RateLimits $oauthLimiter;
+ protected function initializeOAuthRateLimiter():void
+ {
+ $key = $this->service_name;
+ if (!is_null($this->userID)) {
+ $key .= '_'.$this->userID;
+ }
+ $key .= '_oauth';
+ $this->oauthLimiter = new RateLimits($key, ['s' => 1, 'm' => 10, 'h' => 100]);
+ }
/**
* @return array Defaults to the base getRequestHeaders, but can optionally be overridden
*/
@@ -67,11 +76,15 @@
$this->addAction($a['name'], $a['action'], $a['slug']??null, $a['icon']??null, $a['label']??null);
}
}
+ public function hasOAuthCredentials(?int $userID = null):bool
+ {
+ if ($userID !== $this->userID) {
+ $this->switchUser($userID);
+ }
+ return $this->hasValidOAuth();
+ }
public function handleOAuthConnect():array
{
- if (!$this->hasOAuth) {
- return $this->response(false, 'Not an OAuth service');
- }
$url = $this->getOAuthUrl();
if ($url) {
return [
@@ -92,9 +105,6 @@
public function revokeOAuth():bool
{
- if (!$this->hasOAuth) {
- return false;
- }
if (empty($this->oauth['revoke'])) {
error_log('No revoke url set for '.$this->service_name);
return false;
@@ -362,9 +372,7 @@
public function getOAuthURL(?string $return_url = null):string
{
- if (!$this->hasOAuth) {
- return '';
- }
+
$credentials = $this->loadCredentials();
if (empty($this->oauth['authorize'])) {
$this->logError('getOAuthUrl', 'OAuth authorize URL not configured');
@@ -409,9 +417,14 @@
protected function getRedirectUri():string
{
- if ($this->hasOAuth) {
- return admin_url('admin-ajax.php?action='.BASE . $this->service_name . '_oauth_callback');
- }
- return rest_url('jvb/v1/oauth/callback?service=' . $this->service_name);
+ return admin_url('admin-ajax.php?action='.BASE . $this->service_name . '_oauth_callback');
+ }
+
+ /****************************************************
+ * UTILITY
+ ****************************************************/
+ protected function getAccessToken():string
+ {
+ return $this->loadCredentials()['access_token']??'';
}
}
--
Gitblit v1.10.0