Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15092 | Rev 15346 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 15092 Rev 15343
Línea 8... Línea 8...
8
use Laminas\ModuleManager\ModuleEvent;
8
use Laminas\ModuleManager\ModuleEvent;
9
use Laminas\ModuleManager\ModuleManager;
9
use Laminas\ModuleManager\ModuleManager;
10
use Laminas\Mvc\MvcEvent;
10
use Laminas\Mvc\MvcEvent;
11
use Laminas\Config\Reader\Ini;
11
use Laminas\Config\Reader\Ini;
12
use Laminas\Permissions\Acl\Acl;
12
use Laminas\Permissions\Acl\Acl;
-
 
13
use LeadersLinked\Plugin\CurrentNetworkPlugin;
13
use LeadersLinked\Plugin\CurrentUserPlugin;
14
use LeadersLinked\Plugin\CurrentUserPlugin;
14
use LeadersLinked\Model\Company;
15
use LeadersLinked\Model\Company;
15
use LeadersLinked\Mapper\UserMapper;
16
use LeadersLinked\Mapper\UserMapper;
16
use Laminas\Permissions\Acl\Resource\GenericResource;
17
use Laminas\Permissions\Acl\Resource\GenericResource;
17
use Laminas\Permissions\Acl\Role\GenericRole;
18
use Laminas\Permissions\Acl\Role\GenericRole;
18
use LeadersLinked\Mapper\CompanyUserMapper;
19
use LeadersLinked\Mapper\CompanyUserMapper;
19
use LeadersLinked\Mapper\CompanyUserRoleMapper;
20
use LeadersLinked\Mapper\CompanyUserRoleMapper;
20
use LeadersLinked\Mapper\RoleMapper;
21
use LeadersLinked\Mapper\RoleMapper;
21
use LeadersLinked\Mapper\CompanyServiceMapper;
22
use LeadersLinked\Mapper\CompanyServiceMapper;
-
 
23
use LeadersLinked\Model\Network;
22
use LeadersLinked\Model\Service;
24
use LeadersLinked\Model\Service;
23
use LeadersLinked\Model\User;
25
use LeadersLinked\Model\User;
24
use LeadersLinked\Model\UserType;
26
use LeadersLinked\Model\UserType;
25
use LeadersLinked\Model\CompanyService;
27
use LeadersLinked\Model\CompanyService;
26
use LeadersLinked\Model\CompanyUser;
28
use LeadersLinked\Model\CompanyUser;
-
 
29
use LeadersLinked\Mapper\CompanyMapper;
Línea 27... Línea 30...
27
 
30
 
28
class Module 
31
class Module 
29
{
32
{
30
    /**
33
    /**
Línea 66... Línea 69...
66
    
69
    
67
    /**
70
    /**
68
     * 
71
     * 
69
     * @var CurrentUserPlugin
72
     * @var CurrentUserPlugin
70
     */
73
     */
-
 
74
    private $currentUserPlugin;
-
 
75
    
-
 
76
    
-
 
77
    
-
 
78
    /**
-
 
79
     *
-
 
80
     * @var CurrentNetworkPlugin
-
 
81
     */
-
 
82
    private $currentNetworkPlugin;
-
 
83
    
-
 
84
    
Línea 71... Línea 85...
71
    private $currentUser;
85
    
72
    
86
    
73
    
87
    
Línea 138... Línea 152...
138
            'default'
152
            'default'
139
            );
153
            );
Línea 140... Línea 154...
140
        
154
        
Línea -... Línea 155...
-
 
155
        \Laminas\Validator\AbstractValidator::setDefaultTranslator($translator);
-
 
156
        
-
 
157
        
-
 
158
        $this->currentNetworkPlugin = new CurrentNetworkPlugin($adapter);
-
 
159
        if(!$this->currentNetworkPlugin->hasNetwork()) {
-
 
160
            echo '2';
-
 
161
            exit;
-
 
162
            header("HTTP/1.1 401 Unauthorized - Private network - not found");
-
 
163
            exit;
-
 
164
        }
-
 
165
        
-
 
166
        if($this->currentNetworkPlugin->getNetwork()->status == Network::STATUS_INACTIVE) {
-
 
167
            echo '3';
-
 
168
            exit;
-
 
169
            header("HTTP/1.1 401 Unauthorized - Private network - inactive");
-
 
170
            exit;
-
 
171
        }
-
 
172
        
-
 
173
        
-
 
174
        
-
 
175
        if(empty($_SERVER['REDIRECT_URL'])) {
-
 
176
            if(empty($_SERVER['REQUEST_URI'])) {
-
 
177
                $routeName = '';
-
 
178
                
-
 
179
            } else {
-
 
180
                $routeName = $_SERVER['REQUEST_URI'];
-
 
181
            }
-
 
182
            
-
 
183
        } else {
-
 
184
            $routeName = $_SERVER['REDIRECT_URL'];
-
 
185
            
-
 
186
        }
-
 
187
        
-
 
188
        
-
 
189
        $routeName = strtolower(trim($routeName));
-
 
190
        if(strlen($routeName) > 0 && substr($routeName, 0, 1) == '/') {
-
 
191
            $routeName = substr($routeName, 1);
-
 
192
        }
141
        \Laminas\Validator\AbstractValidator::setDefaultTranslator($translator);
193
        
142
        
194
        
143
 
195
        
-
 
196
        $this->isHtml = $this->isJson ? false : true;
-
 
197
        $this->currentUserPlugin = new CurrentUserPlugin($adapter);
-
 
198
        
-
 
199
        
-
 
200
        
-
 
201
        if($this->currentUserPlugin->hasIdentity()) {
-
 
202
            if(in_array($routeName, ['signout', 'signin-admin', 'signin-company', 'home'])) {
-
 
203
                $checkUserForNetwork = false;
-
 
204
            } else {
-
 
205
                $checkUserForNetwork = true;
-
 
206
            }
-
 
207
        } else {
-
 
208
            $checkUserForNetwork = false;
-
 
209
        }
-
 
210
        
-
 
211
        
-
 
212
        
-
 
213
 
-
 
214
        
-
 
215
        
-
 
216
        if($checkUserForNetwork) {
-
 
217
            if($this->currentUserPlugin->getUser()->network_id != $this->currentNetworkPlugin->getNetworkId()) {
-
 
218
                header("HTTP/1.1 401 Unauthorized - The user is not part of this private network");
-
 
219
                exit;
-
 
220
            }
144
        $this->isHtml = $this->isJson ? false : true;
221
        }
145
        $this->currentUser = new CurrentUserPlugin($adapter);
222
        
146
        $this->initAcl($event);
223
        $this->initAcl($event);
147
        $eventManager = $event->getApplication()->getEventManager();
224
        $eventManager = $event->getApplication()->getEventManager();
Línea 172... Línea 249...
172
        }
249
        }
Línea 173... Línea 250...
173
        
250
        
Línea 174... Línea 251...
174
        
251
        
175
        
252
        
-
 
253
 
176
 
254
        $rolesForUsertype = getAclRolesForUsertype();
Línea 177... Línea 255...
177
        $rolesForUsertype = getAclUsertype();
255
    
Línea 283... Línea 361...
283
                    }
361
                    }
284
                } else {
362
                } else {
285
                    $companyUserRoleMapper = CompanyUserRoleMapper::getInstance($adapter);
363
                    $companyUserRoleMapper = CompanyUserRoleMapper::getInstance($adapter);
286
                    $companyUserRoles = $companyUserRoleMapper->fetchAllByCompanyIdAndUserId($company->id, $user->id);
364
                    $companyUserRoles = $companyUserRoleMapper->fetchAllByCompanyIdAndUserId($company->id, $user->id);
Línea -... Línea 365...
-
 
365
                     
-
 
366
                    
287
                     
367
                    
288
                    foreach($companyUserRoles as $companyUserRole)
368
                    foreach($companyUserRoles as $companyUserRole)
Línea 289... Línea 369...
289
                    {
369
                    {
-
 
370
 
290
 
371
                         $role = $roleMapper->fetchOne($companyUserRole->role_id);
Línea 291... Línea 372...
291
                         $role = $roleMapper->fetchOne($companyUserRole->role_id);
372
  
Línea 292... Línea 373...
292
                         if($role) {
373
                         if($role) {
293
                         
374
                         
-
 
375
                             if($role->service_id) {
294
                             if($role->service_id) {
376
                             
295
                             
-
 
Línea 296... Línea 377...
296
                             if(!in_array($role->service_id, $servicesActive)) {
377
                                 if(!in_array($role->service_id, $servicesActive)) {
297
                                continue;
378
                                    continue;
298
                             }
379
                                 }
299
                         }
380
                             }
300
                         
381
                         
-
 
382
                             if(isset($rolesForCompany[ $role->code ] )) {
-
 
383
                                 foreach($rolesForCompany[ $role->code ] as $resourceName)
301
                         if(isset($roles[ $role->code ] )) {
384
                                 {
302
                             foreach($roles[ $role->code ] as $resourceName)
-
 
303
                             {
385
                                     if(!in_array($resourceName, $resources)) {
304
                                 if(!in_array($resourceName, $resources)) {
-
 
305
                                    array_push($resources, $resourceName);
386
                                        array_push($resources, $resourceName);
Línea 306... Línea 387...
306
                                 }
387
                                     }
307
                                 
388
                                     
308
                             }
389
                                 }
Línea 330... Línea 411...
330
                {
411
                {
331
                    // echo $resourceName . PHP_EOL;
412
                    // echo $resourceName . PHP_EOL;
332
                    $this->acl->allow($usertype, $resourceName);
413
                    $this->acl->allow($usertype, $resourceName);
333
                }
414
                }
334
            }
415
            }
-
 
416
            
-
 
417
            
-
 
418
            if($this->currentUserPlugin->hasIdentity()) {
-
 
419
                $user = $this->currentUserPlugin->getUser();
-
 
420
                
-
 
421
                if($user->is_super_user == User::IS_SUPER_USER_YES) {
-
 
422
                    $resources = getAclPermissionSuperAdmin();
-
 
423
                    foreach ($resources as $resourceName)
-
 
424
                    {
-
 
425
                        $this->acl->allow(UserType::ADMIN, $resourceName);
-
 
426
                    }
-
 
427
                }
-
 
428
            }
-
 
429
            
-
 
430
            if($this->company == null) {
-
 
431
                
-
 
432
                if($network->default == Network::DEFAULT_YES) {
-
 
433
                    $resources = getAclPermissionAdminForDefaultNetwork();
-
 
434
                    foreach ($resources as $resourceName)
-
 
435
                    {
-
 
436
                        $this->acl->allow(UserType::ADMIN, $resourceName);
-
 
437
                    }
-
 
438
                } else {
-
 
439
                    
-
 
440
                    $companyMapper = CompanyMapper::getInstance($adapter);
-
 
441
                    $company = $companyMapper->fetchDefaultForNetworkByNetworkId($network->id);
-
 
442
                    if($company) {
-
 
443
                        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
444
                        $companyUser = $companyUserMapper->fetchCreatorByCompanyId($company->id);
-
 
445
                        if($companyUser && $companyUser->user_id == $this->currentUserPlugin->getUserId()) {
-
 
446
                            
-
 
447
                            $resources = getAclPermissionAdminForNonDefaultNetwork();
-
 
448
                            foreach ($resources as $resourceName)
-
 
449
                            {
-
 
450
                                $this->acl->allow(UserType::ADMIN, $resourceName);
-
 
451
                            }
-
 
452
                            
-
 
453
                        }
-
 
454
                    }
-
 
455
                    
-
 
456
                    
-
 
457
                }
-
 
458
            }
335
        }
459
        }
336
        $event->getViewModel()->setVariable('acl', $this->acl);
460
        $event->getViewModel()->setVariable('acl', $this->acl);
337
    }
461
    }
Línea 338... Línea 462...
338
    
462
    
Línea 423... Línea 547...
423
    public function authPreDispatch(MvcEvent $event)
547
    public function authPreDispatch(MvcEvent $event)
424
    {
548
    {
425
        $serviceManager = $event->getApplication()->getServiceManager();
549
        $serviceManager = $event->getApplication()->getServiceManager();
426
        $adapter = $serviceManager->get('leaders-linked-db');
550
        $adapter = $serviceManager->get('leaders-linked-db');
Línea 427... Línea 551...
427
        
551
        
Línea 428... Línea 552...
428
        $userTypeId = $this->currentUser->getUserTypeId();
552
        $userTypeId = $this->currentUserPlugin->getUserTypeId();
Línea 429... Línea 553...
429
        
553
        
430
 
554
 
Línea 431... Línea 555...
431
        
555
        
Línea 432... Línea 556...
432
 
556
 
Línea 462... Línea 586...
462
            
586
            
463
            
587
            
Línea 464... Línea 588...
464
            echo "userTypeId = $userTypeId routeName = $routeName";
588
            echo "userTypeId = $userTypeId routeName = $routeName";
Línea 465... Línea 589...
465
            exit;
589
            exit;
466
           
590
           
467
            $this->currentUser->clearIdentity(); 
591
            $this->currentUserPlugin->clearIdentity();