Skip to content

Commit

Permalink
add user check to OnMODXInit
Browse files Browse the repository at this point in the history
disable cache on Fred = 2

Signed-off-by: matdave <[email protected]>
  • Loading branch information
matdave committed Nov 8, 2024
1 parent 102fd7e commit d1edaf4
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 41 deletions.
8 changes: 8 additions & 0 deletions core/components/fred/src/Elements/Event/OnLoadWebDocument.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace Fred\Elements\Event;

class OnLoadWebDocument
{
use \Fred\Traits\Elements\Event\OnLoadWebDocument;
}
19 changes: 2 additions & 17 deletions core/components/fred/src/Elements/Event/OnMODXInit.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,6 @@

class OnMODXInit extends Event
{

public function run()
{
if ($_GET['fred'] && intval($_GET['fred']) !== 2) {
return;
}

$params = json_decode(file_get_contents('php://input'), true);

if (empty($params) || empty($params['themeSettingsPrefix']) || empty($params['themeSettings']) || !is_array($params['themeSettings'])) {
return;
}

foreach ($params['themeSettings'] as $name => $value) {
$this->modx->setOption($params['themeSettingsPrefix'] . '.setting.' . $name, $value);
}
}
use \Fred\Traits\Elements\Event\OnMODXInit;
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Fred\Traits\Elements\Event;

use Fred\Traits\User;

trait OnLoadWebDocument
{
use User;
public function run()
{
if (!$this->canFred()) {
return;
}
if ($_GET['fred'] && intval($_GET['fred']) !== 2) {
return;
}
$this->modx->resource->set('cacheable', 0);
}
}
29 changes: 29 additions & 0 deletions core/components/fred/src/Traits/Elements/Event/OnMODXInit.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace Fred\Traits\Elements\Event;

use Fred\Traits\User;

trait OnMODXInit
{
use User;
public function run()
{
if (!$this->canFred()) {
return;
}
if ($_GET['fred'] && intval($_GET['fred']) !== 2) {
return;
}

$params = json_decode(file_get_contents('php://input'), true);

if (empty($params) || empty($params['themeSettingsPrefix']) || empty($params['themeSettings']) || !is_array($params['themeSettings'])) {
return;
}

foreach ($params['themeSettings'] as $name => $value) {
$this->modx->setOption($params['themeSettingsPrefix'] . '.setting.' . $name, $value);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,17 @@
namespace Fred\Traits\Elements\Event;

use Firebase\JWT\JWT;
use Fred\Traits\User;
use Wa72\HtmlPageDom\HtmlPageCrawler;

trait OnWebPagePrerender
{
use User;
public function run()
{
$theme = $this->fred->getTheme($this->modx->resource->template);
if (!empty($theme)) {
if (!$this->modx->user) {
return;
}
if (!($this->modx->user->hasSessionContext('mgr') || $this->modx->user->hasSessionContext($this->modx->resource->context_key))) {
return;
}
if (!$this->modx->hasPermission('fred')) {
if (!$this->canFred()) {
return;
}

Expand Down
20 changes: 20 additions & 0 deletions core/components/fred/src/Traits/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Fred\Traits;

trait User
{
public function canFred(): bool
{
if (!$this->modx->user) {
return false;
}
if (!($this->modx->user->hasSessionContext('mgr') || $this->modx->user->hasSessionContext($this->modx->resource->context_key))) {
return false;
}
if (!$this->modx->hasPermission('fred')) {
return false;
}
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace Fred\v2\Elements\Event;

class OnLoadWebDocument
{
use \Fred\Traits\Elements\Event\OnLoadWebDocument;
}
18 changes: 1 addition & 17 deletions core/components/fred/src/v2/Elements/Event/OnMODXInit.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,5 @@

class OnMODXInit extends Event
{

public function run()
{
if ($_GET['fred'] && intval($_GET['fred']) !== 2) {
return;
}

$params = json_decode(file_get_contents('php://input'), true);

if (empty($params) || empty($params['themeSettingsPrefix']) || empty($params['themeSettings']) || !is_array($params['themeSettings'])) {
return;
}

foreach ($params['themeSettings'] as $name => $value) {
$this->modx->setOption($params['themeSettingsPrefix'] . '.setting.' . $name, $value);
}
}
use \Fred\Traits\Elements\Event\OnMODXInit;
}

0 comments on commit d1edaf4

Please sign in to comment.