2121 * This class is part of Ubiquity
2222 *
2323 * @author jc
24- * @version 1.0.2
24+ * @version 1.0.3
2525 *
2626 */
2727class 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