| | |
| | | |
| | | use DateTime; |
| | | use DateTimeZone; |
| | | use JVBase\integrations\services\Cloudflare; |
| | | use JVBase\managers\Errors; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\managers\OperationQueue; |
| | | use JVBase\managers\Cache; |
| | |
| | | protected function logError(string $message, array $context = [], string $severity = 'error') |
| | | { |
| | | try { |
| | | JVB()->error()->log( |
| | | Errors::getInstance()->log( |
| | | 'artist_invitations', // component |
| | | $message, |
| | | $context, |
| | |
| | | */ |
| | | protected function checkUser(int $userID): bool |
| | | { |
| | | $cache = Cache::for('checkUser', DAY_IN_SECONDS)->connect('user'); |
| | | $cache = Cache::for('checkUser', 'user',DAY_IN_SECONDS); |
| | | |
| | | return $cache->remember($userID, function() use ($userID) { |
| | | return (bool)get_userdata($userID); |
| | |
| | | */ |
| | | protected function checkShop(int $shopID): bool |
| | | { |
| | | $cache = Cache::for('checkShop',DAY_IN_SECONDS)->connect('taxonomy'); |
| | | $cache = Cache::for('checkShop', 'term',DAY_IN_SECONDS); |
| | | |
| | | return $cache->remember($shopID, function() use ($shopID) { |
| | | return (bool)term_exists($shopID, BASE . 'shop'); |
| | |
| | | } |
| | | |
| | | $taxonomy = jvbCheckBase($taxonomy); |
| | | $cache = Cache::for('checkTerm', DAY_IN_SECONDS)->connect('taxonomy'); |
| | | $cache = Cache::for('checkTerm', 'term', DAY_IN_SECONDS); |
| | | |
| | | return $cache->remember($termID, function() use ($termID, $taxonomy) { |
| | | return (bool)term_exists($termID, $taxonomy); |
| | |
| | | */ |
| | | public function isVerifiedUser(int $user_id): bool |
| | | { |
| | | $cache = Cache::for('verifiedUsers', DAY_IN_SECONDS)->connect('user'); |
| | | $cache = Cache::for('verifiedUsers', 'user',DAY_IN_SECONDS); |
| | | |
| | | return $cache->remember($user_id, function() use ($user_id) { |
| | | return user_can($user_id, 'skip_moderation'); |
| | |
| | | $key = $cache->generateKey($key); |
| | | } |
| | | |
| | | // Prefer tag freshness if available |
| | | $tags = $cache->getTags(); |
| | | |
| | | $lastModified = $tags |
| | | ? $cache->getLastModifiedForTags($tags) |
| | | : $cache::lastModified($group); |
| | | |
| | | $lastModified = $cache::lastModified($group); |
| | | |
| | | if (!$lastModified) { |
| | | return false; |
| | |
| | | |
| | | // Use existing error handler |
| | | try { |
| | | JVB()->error()->log( |
| | | Errors::getInstance()->log( |
| | | 'security_audit', |
| | | $event, |
| | | $context, |
| | |
| | | |
| | | protected function verifyTurnstile(string $token): bool |
| | | { |
| | | if (!Site::hasIntegration('cloudflare') || !JVB()->connect('cloudflare')->isSetUp()) { |
| | | if (!Site::hasIntegration('cloudflare') || !Cloudflare::getInstance()->isSetUp()) { |
| | | return true; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | |
| | | return JVB()->connect('cloudflare')->verifyTurnstile($token); |
| | | return Cloudflare::getInstance()->verifyTurnstile($token); |
| | | } |
| | | } |