Skip to content

Commit 2a9aeb4

Browse files
committed
add dbOffset for models creation in AclDAOProvider
1 parent 37456e5 commit 2a9aeb4

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

src/Ubiquity/security/acl/persistence/AclDAOProvider.php

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* This class is part of Ubiquity
2222
*
2323
* @author jc
24-
* @version 1.0.2
24+
* @version 1.0.3
2525
*
2626
*/
2727
class AclDAOProvider implements AclProviderInterface {
@@ -33,7 +33,7 @@ class AclDAOProvider implements AclProviderInterface {
3333
protected string $permissionClass;
3434

3535
protected string $resourceClass;
36-
36+
3737
/**
3838
* @param array $config The $config array
3939
* @param array $classes
@@ -68,7 +68,7 @@ public function initModelsCache(&$config) {
6868
* @param string $dbOffset
6969
* @param bool $persist
7070
*/
71-
public function setDbOffset(string $dbOffset = 'default',bool $persist=true):void {
71+
public function setDbOffset(string $dbOffset = 'default', bool $persist=true): void {
7272
DAO::setModelDatabase($this->aclClass, $dbOffset);
7373
DAO::setModelDatabase($this->resourceClass, $dbOffset);
7474
DAO::setModelDatabase($this->roleClass, $dbOffset);
@@ -81,23 +81,28 @@ public function setDbOffset(string $dbOffset = 'default',bool $persist=true):voi
8181
/**
8282
* Generates the models.
8383
* @param ?array $classes associative array['acl'=>'','role'=>'','resource'=>'','permission'=>'']
84+
* @param string $dbOffset default
8485
*/
85-
public function createModels(?array $classes=null):void{
86+
public function createModels(?array $classes=null, string $dbOffset='default'): void {
8687
$classes??=[
8788
'acl'=>'models\\AclElement','role'=>'models\\Role','resource'=>'models\\Resource','permission'=>'models\\Permission'
8889
];
8990
$this->setClasses($classes);
90-
$this->createModel($classes['acl'] ?? $this->aclClass,AclElement::class);
91-
$this->createModel($classes['role'] ?? $this->roleClass,Role::class);
92-
$this->createModel($classes['resource'] ?? $this->resourceClass,Resource::class);
93-
$this->createModel($classes['permission'] ?? $this->permissionClass,Permission::class);
91+
$this->createModel($classes['acl'] ?? $this->aclClass,AclElement::class, $dbOffset);
92+
$this->createModel($classes['role'] ?? $this->roleClass,Role::class, $dbOffset);
93+
$this->createModel($classes['resource'] ?? $this->resourceClass,Resource::class, $dbOffset);
94+
$this->createModel($classes['permission'] ?? $this->permissionClass,Permission::class, $dbOffset);
9495
}
9596

96-
public function createModel($modelName,$refName):void{
97-
if($modelName!==$refName){
97+
public function createModel(string $modelName, string $refName, string $dbOffset='default'): void {
98+
if ($modelName!==$refName) {
9899
$className=ClassUtils::getClassSimpleName($modelName);
99100
$ns=ClassUtils::getNamespaceFromCompleteClassname($modelName);
100-
$cCreator=new ClassCreator($className,'',$ns,' extends \\'.$refName);
101+
$cCreator=new ClassCreator($className, $ns, ' extends \\'.$refName);
102+
if ($dbOffset!=='default') {
103+
$annot=CacheManager::getAnnotationsEngineInstance()->getAnnotation($cCreator, 'database', ['name'=>$dbOffset]);
104+
$cCreator->addClassAttribute($annot);
105+
}
101106
$cCreator->generate();
102107
}
103108
}
@@ -111,15 +116,15 @@ public function createModel($modelName,$refName):void{
111116
public function generateDbTables(string $dbOffset='default',bool $createDb=false):void{
112117
$this->setDbOffset($dbOffset);
113118
$generator = new DatabaseReversor(new DbGenerator(), $dbOffset);
114-
$activeOffsetValue=DAO::getDbOffset(Startup::$config,$dbOffset);
115-
if(($dbName=$activeOffsetValue['dbName']??'')!='') {
119+
$activeOffsetValue=DAO::getDbOffset(Startup::$config, $dbOffset);
120+
if (($dbName=$activeOffsetValue['dbName']??'')!='') {
116121
$generator->setModels([$this->aclClass,$this->roleClass,$this->resourceClass,$this->permissionClass]);
117122
$generator->createDatabase($dbName, $createDb);
118123
$db=DAO::getDatabase($dbOffset);
119124
$db->beginTransaction();
120125
$db->execute($generator->__toString());
121126
$db->commit();
122-
}else{
127+
} else {
123128
throw new AclException('dbName key is not present or his value is empty!');
124129
}
125130
}
@@ -131,7 +136,7 @@ public function generateDbTables(string $dbOffset='default',bool $createDb=false
131136
*/
132137
public function loadAllAcls(): array {
133138
$result= DAO::getAll($this->aclClass);
134-
foreach ($result as $elm){
139+
foreach ($result as $elm) {
135140
$elm->setType(AclDAOProvider::class);
136141
}
137142
return $result;
@@ -144,19 +149,19 @@ public function loadAllAcls(): array {
144149
*/
145150
public function saveAcl(AclElement $aclElement) {
146151
$aclElement->_rest=[];
147-
if(!$this->existPart($aclElement->getResource())){
152+
if (!$this->existPart($aclElement->getResource())) {
148153
$this->savePart($aclElement->getResource());
149154
}
150-
if(!$this->existPart($aclElement->getPermission())){
155+
if (!$this->existPart($aclElement->getPermission())) {
151156
$this->savePart($aclElement->getPermission());
152157
}
153-
if(!$this->existPart($aclElement->getRole())){
158+
if (!$this->existPart($aclElement->getRole())) {
154159
$this->savePart($aclElement->getRole());
155160
}
156161
$object = $this->castElement($aclElement);
157-
if($this->existAcl($aclElement)){
162+
if ($this->existAcl($aclElement)) {
158163
$res=DAO::update($object);
159-
}else {
164+
} else {
160165
$res = DAO::insert($object);
161166
}
162167
if ($res) {
@@ -223,10 +228,10 @@ public function loadAllRoles(): array {
223228
*/
224229
public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
225230
$object = $this->castElement($part);
226-
if($this->existPart($part)) {
231+
if ($this->existPart($part)) {
227232
$object->_rest=[];
228233
$res = DAO::update($object);
229-
}else{
234+
} else {
230235
$res=DAO::insert($object);
231236
}
232237
if ($res) {
@@ -240,7 +245,7 @@ public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
240245
* {@inheritdoc}
241246
* @see \Ubiquity\security\acl\persistence\AclProviderInterface::updatePart()
242247
*/
243-
public function updatePart(string $id,\Ubiquity\security\acl\models\AbstractAclPart $part) {
248+
public function updatePart(string $id, \Ubiquity\security\acl\models\AbstractAclPart $part) {
244249
$object=$this->castElement($part);
245250
$object->_rest=[];
246251
$object->_pkv['___name']=$id;

0 commit comments

Comments
 (0)