63 lines
1.3 KiB
PHP
63 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Piwik - free/libre analytics platform
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*
|
|
*/
|
|
namespace Piwik\Access;
|
|
|
|
use Piwik\Access\Role\Admin;
|
|
use Piwik\Access\Role\View;
|
|
use Piwik\Access\Role\Write;
|
|
use Piwik\Piwik;
|
|
use Exception;
|
|
|
|
class RolesProvider
|
|
{
|
|
/**
|
|
* @return Role[]
|
|
*/
|
|
public function getAllRoles()
|
|
{
|
|
return array(
|
|
new View(),
|
|
new Write(),
|
|
new Admin()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns the list of the existing Access level.
|
|
* Useful when a given API method requests a given acccess Level.
|
|
* We first check that the required access level exists.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getAllRoleIds()
|
|
{
|
|
$ids = array();
|
|
foreach ($this->getAllRoles() as $role) {
|
|
$ids[] = $role->getId();
|
|
}
|
|
return $ids;
|
|
}
|
|
|
|
public function isValidRole($roleId)
|
|
{
|
|
$roles = $this->getAllRoleIds();
|
|
|
|
return in_array($roleId, $roles, true);
|
|
}
|
|
|
|
public function checkValidRole($roleId)
|
|
{
|
|
if (!$this->isValidRole($roleId)) {
|
|
$roles = $this->getAllRoleIds();
|
|
throw new Exception(Piwik::translate("UsersManager_ExceptionAccessValues", implode(", ", $roles)));
|
|
}
|
|
}
|
|
|
|
}
|