3 use dns\system\cache\builder\AclCacheBuilder
;
4 use dns\system\cache\builder\DomainCacheBuilder
;
5 use dns\system\cache\builder\UserCacheBuilder
;
6 use Zend\Permissions\Acl\
Resource\GenericResource
as Resource;
7 use Zend\Permissions\Acl\Role\GenericRole
as Role
;
8 use Zend\Permissions\Acl\Acl
;
11 * @author Jan Altensen (Stricted)
12 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
13 * @copyright 2013-2016 Jan Altensen (Stricted)
15 class AclHandler
extends SingletonFactory
{
16 protected $acl = null;
18 protected function init () {
19 $this->acl
= new Acl();
21 $users = UserCacheBuilder
::getInstance()->getData();
22 $domains = DomainCacheBuilder
::getInstance()->getData();
23 $permissions = AclCacheBuilder
::getInstance()->getData();
26 foreach ($users as $user) {
27 $this->acl
->addRole((string)$user['userID']);
31 foreach ($domains as $domain) {
32 $this->acl
->addResource((string)$domain['id']);
36 foreach ($permissions as $permission) {
37 var_dump($permission);
38 $this->acl
->allow((string)$permission['userID'], (string)$permission['soaID']);
41 var_dump($this->acl
->getRole(1));
45 protected function resetCache () {
46 AclCacheBuilder
::getInstance()->reset();
47 DomainCacheBuilder
::getInstance()->reset();
48 UserCacheBuilder
::getInstance()->reset();
51 public function canAccess ($soaID, $userID = null) {
52 if ($userID === null) $userID = DNS
::getSession()->userID
;
53 return $this->acl
->isAllowed((string)$soaID, (string)$userID);
56 public function addPermission ($soaID, $userID = null) {
57 if ($userID === null) $userID = DNS
::getSession()->userID
;
59 $sql = "INSERT INTO dns_soa_to_user (id, userID, soaID) VALUES (null, ?, ?)";
60 DNS
::getDB()->query($sql, array($userID, $soaID));
62 $this->acl
->allow((string)$userID, (string)$soaID);
66 public function delPermission ($soaID, $userID = null) {
67 if ($userID === null) $userID = DNS
::getSession()->userID
;
69 $sql = "DELETE FROM dns_soa_to_user WHERE userID = ? AND soaID = ?";
70 DNS
::getDB()->query($sql, array($userID, $soaID));
72 $this->acl
->removeAllow((string)$userID, (string)$soaID);
76 public function getUsersForDomain ($soaID) {
78 $permissions = AclCacheBuilder
::getInstance()->getData();
80 foreach ($permissions as $permission) {
81 if ($permission['soaID'] == $soaID) {
82 $users[] = $permission['userID']
92 public function getDomainsForUser ($userID) {
94 $permissions = AclCacheBuilder
::getInstance()->getData();
96 foreach ($permissions as $permission) {
97 if ($permission['userID'] == $userID) {
98 $domains[] = $permission['soaID']