From 42fa8304ddb811b0f725f245130f70c0f5e86a6c Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 04 Nov 2025 06:12:02 +0000
Subject: [PATCH] =Refactored LoginManager to be more extensible and configurable, as well as an AjaxRateLimiter
---
inc/managers/RoleManager.php | 54 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/inc/managers/RoleManager.php b/inc/managers/RoleManager.php
index b575a04..417c2ee 100644
--- a/inc/managers/RoleManager.php
+++ b/inc/managers/RoleManager.php
@@ -356,22 +356,29 @@
}
}
+ /**
+ * @param string $content
+ * @return array|string[]
+ * Note: must match what is created in PostTypeRegistrar.php::register
+ */
protected function getCapabilities(string $content):array
{
$content = jvbNoBase($content);
if (!$this->isValidContentType($content)) {
return [];
}
+
$plural = $this->getContentPlural($content);
+
return [
- 'edit_' . $plural,
- 'delete_' . $plural,
- 'read_' . $plural,
- 'edit_published_' . $plural,
- 'delete_published_' . $plural,
- 'edit_private_' . $plural,
- 'delete_private_' . $plural,
- 'publish_' . $plural,
+ "edit_{$content}",
+ "read_{$content}",
+ "delete_{$content}",
+ "edit_{$plural}",
+ "edit_others_{$plural}",
+ "publish_{$plural}",
+ "read_private_{$plural}",
+ "edit_{$plural}",
];
}
protected function getOthersCapabilities(string $content):array
@@ -382,23 +389,32 @@
}
$plural = $this->getContentPlural($content);
return [
- 'edit_others_' . $plural,
- 'delete_others_' . $plural,
- 'read_private_' . $plural,
- 'edit_private_' . $plural,
- 'delete_private_' . $plural,
+ "edit_others_{$plural}",
+ "delete_others_{$plural}",
+ "read_private_{$plural}",
+ "edit_private_{$plural}",
+ "delete_private_{$plural}",
];
}
- private function getContentPlural(string $content): string
+ public static function getPlural(string $content): string
+ {
+ $self = new self;
+ return $self->getContentPlural($content);
+ }
+ public function getContentPlural(string $content): string
{
$content = jvbNoBase($content);
-
- if (array_key_exists($content, JVB_CONTENT)) {
- return strtolower(JVB_CONTENT[$content]['plural'] ?? $content . 's');
+ $config = Features::getConfig($content);
+ $capsMap = $config['capability_type']??[];
+ if (empty($capsMap)){
+ $capsMap = [
+ $content,
+ str_replace('-', '_',sanitize_title(strtolower(JVB_CONTENT[$content]['plural'])))
+ ];
+ return $capsMap[1];
}
-
- return strtolower($content . 's');
+ return str_replace('-', '_', sanitize_title(strtolower($content . 's')));
}
public function activate(): void
--
Gitblit v1.10.0