fix use statement order
[GitHub/Stricted/Domain-Control-Panel.git] / lib / system / AclHandler.class.php
CommitLineData
58202aac
S
1<?php
2namespace dns\system;
3use dns\system\cache\builder\AclCacheBuilder;
4use dns\system\cache\builder\DomainCacheBuilder;
5use dns\system\cache\builder\UserCacheBuilder;
58202aac 6use Zend\Permissions\Acl\Resource\GenericResource as Resource;
bde15b3c
S
7use Zend\Permissions\Acl\Role\GenericRole as Role;
8use Zend\Permissions\Acl\Acl;
58202aac
S
9
10/**
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)
14 */
15class AclHandler extends SingletonFactory {
16 protected $acl = null;
17
18 protected function init () {
19 $this->acl = new Acl();
20
21 $users = UserCacheBuilder::getInstance()->getData();
22 $domains = DomainCacheBuilder::getInstance()->getData();
23 $permissions = AclCacheBuilder::getInstance()->getData();
24
25 /* add users */
26 foreach ($users as $user) {
27 $this->acl->addRole((string)$user['userID']);
28 }
29
30 /* add domains */
31 foreach ($domains as $domain) {
32 $this->acl->addResource((string)$domain['id']);
33 }
34
35 /* ass assignments */
36 foreach ($permissions as $permission) {
37 var_dump($permission);
38 $this->acl->allow((string)$permission['userID'], (string)$permission['soaID']);
39 }
40
41 var_dump($this->acl->getRole(1));
42 exit;
43 }
44
45 protected function resetCache () {
46 AclCacheBuilder::getInstance()->reset();
47 DomainCacheBuilder::getInstance()->reset();
48 UserCacheBuilder::getInstance()->reset();
49 }
50
51 public function canAccess ($soaID, $userID = null) {
52 if ($userID === null) $userID = DNS::getSession()->userID;
53 return $this->acl->isAllowed((string)$soaID, (string)$userID);
54 }
55
56 public function addPermission ($soaID, $userID = null) {
57 if ($userID === null) $userID = DNS::getSession()->userID;
58
59 $sql = "INSERT INTO dns_soa_to_user (id, userID, soaID) VALUES (null, ?, ?)";
60 DNS::getDB()->query($sql, array($userID, $soaID));
61
62 $this->acl->allow((string)$userID, (string)$soaID);
63 $this->resetCache();
64 }
65
66 public function delPermission ($soaID, $userID = null) {
67 if ($userID === null) $userID = DNS::getSession()->userID;
68
69 $sql = "DELETE FROM dns_soa_to_user WHERE userID = ? AND soaID = ?";
70 DNS::getDB()->query($sql, array($userID, $soaID));
71
72 $this->acl->removeAllow((string)$userID, (string)$soaID);
73 $this->resetCache();
74 }
75
76 public function getUsersForDomain ($soaID) {
77 $users = [];
78 $permissions = AclCacheBuilder::getInstance()->getData();
79
80 foreach ($permissions as $permission) {
81 if ($permission['soaID'] == $soaID) {
82 $users[] = $permission['userID']
83 }
84 else {
85 continue;
86 }
87 }
88
89 return $users;
90 }
91
92 public function getDomainsForUser ($userID) {
93 $domains = [];
94 $permissions = AclCacheBuilder::getInstance()->getData();
95
96 foreach ($permissions as $permission) {
97 if ($permission['userID'] == $userID) {
98 $domains[] = $permission['soaID']
99 }
100 else {
101 continue;
102 }
103 }
104
105 return $domains;
106 }
107}