Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 7141 | Rev 7335 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\ModuleManager\ModuleEvent;
8
use Laminas\ModuleManager\ModuleManager;
9
use Laminas\Mvc\MvcEvent;
10
use Laminas\Config\Reader\Ini;
11
use Laminas\Permissions\Acl\Acl;
12
use Laminas\Permissions\Acl\Role\GenericRole;
13
use LeadersLinked\Plugin\CurrentUserPlugin;
14
use LeadersLinked\Mapper\UserMapper;
15
use LeadersLinked\Authentication\AuthTokenAdapter;
16
use Laminas\Authentication\AuthenticationService;
17
use Laminas\Permissions\Acl\Resource\GenericResource;
18
use LeadersLinked\Model\UserType;
3639 efrain 19
use LeadersLinked\Plugin\CurrentNetworkPlugin;
20
use LeadersLinked\Model\Network;
21
use LeadersLinked\Model\User;
22
use LeadersLinked\Mapper\CompanyUserMapper;
23
use LeadersLinked\Model\CompanyUser;
24
use LeadersLinked\Mapper\CompanyMapper;
5205 efrain 25
use LeadersLinked\Mapper\CompanyServiceMapper;
26
use LeadersLinked\Model\Service;
6849 efrain 27
 
6749 efrain 28
use LeadersLinked\Library\Functions;
7122 efrain 29
use LeadersLinked\Mapper\DailyPulseMapper;
30
use LeadersLinked\Model\DailyPulse;
7134 efrain 31
use LeadersLinked\Mapper\OrganizationPositionMapper;
32
use LeadersLinked\Mapper\KnowledgeAreaCategoryJobDescriptionMapper;
33
use LeadersLinked\Mapper\MyCoachCategoryJobDescriptionMapper;
7141 efrain 34
use LeadersLinked\Mapper\KnowledgeAreaCategoryUserMapper;
35
use LeadersLinked\Mapper\MyCoachCategoryUserMapper;
1 www 36
 
37
class Module
38
{
39
    /**
40
     *
41
     * @var boolean
42
     */
43
    private $isJson;
44
 
45
    /**
46
     *
47
     * @var boolean
48
     */
49
    private $isHtml;
50
 
51
    /**
52
     *
53
     * @var Acl
54
     */
55
    private $acl;
56
 
57
    /**
58
     *
59
     * @var AdapterInterface
60
     */
61
    private $adapter;
62
 
63
    /**
64
     *
65
     * @var CurrentUserPlugin
66
     */
3639 efrain 67
    private $currentUserPlugin;
1 www 68
 
69
    /**
3639 efrain 70
     *
71
     * @var CurrentNetworkPlugin
72
     */
73
    private $currentNetworkPlugin;
74
 
75
    /**
1 www 76
     *
77
     * @var array
78
     */
79
    private $routesAuthorized = [];
80
 
81
    /**
82
     *
83
     * @var boolean
84
     */
85
    private $authByHeaders = false;
86
 
7330 efrain 87
 
88
    /**
89
     *
90
     * @var array
91
     */
92
    private $config;
93
 
94
 
95
 
1 www 96
    public function init(ModuleManager $moduleManager)
97
    {
98
        $events = $moduleManager->getEventManager();
99
        $events->attach(ModuleEvent::EVENT_MERGE_CONFIG, array($this, 'onMergeConfig'));
100
    }
101
 
102
    public function onMergeConfig(ModuleEvent $event)
103
    {
104
        $configListener = $event->getConfigListener();
7330 efrain 105
        $this->config   = $configListener->getMergedConfig(false);
1 www 106
 
107
        $reader = new Ini();
108
        $data = $reader->fromFile('config/leaderslinked.ini');
109
 
110
        $prefix = 'leaderslinked';
111
        foreach($data as $section => $pairs)
112
        {
113
            foreach($pairs as $key => $value)
114
            {
7330 efrain 115
                $this->config[$prefix . '.' . $section . '.' . $key] = $value;
1 www 116
            }
117
        }
7330 efrain 118
        $configListener->setMergedConfig($this->config);
1 www 119
    }
120
 
121
 
122
    public function getConfig() : array
123
    {
124
        return include __DIR__ . '/../config/module.config.php';
125
    }
126
 
127
    public function onBootstrap(MvcEvent $event)
128
    {
129
        $serviceManager = $event->getApplication()->getServiceManager();
130
        $adapter = $serviceManager->get('leaders-linked-db');
131
       // $logger          = $serviceManager->get('Zend\Log\Logger');
132
 
133
 
134
        $session = $serviceManager->get('leaders-linked-session');
135
        $session->start();
136
 
137
 
138
        $translator = $serviceManager->get('MvcTranslator');
139
        $translator->addTranslationFile(
140
            'phpArray',
141
            __DIR__ . '/i18n/validate.php',
142
            'default'
143
            );
144
 
145
        $translator->addTranslationFile(
146
            'phpArray',
147
            __DIR__ . '/i18n/spanish.php',
148
            'default'
149
            );
150
 
151
        \Laminas\Validator\AbstractValidator::setDefaultTranslator($translator);
152
 
153
 
154
        $headers  = $event->getRequest()->getHeaders();
155
        if($headers->has('Accept')) {
156
            $accept = $headers->get('Accept');
157
            $prioritized = $accept->getPrioritized();
158
 
159
            foreach($prioritized as $key => $value) {
160
                $raw = trim($value->getRaw());
161
 
162
                if(!$this->isJson) {
163
                    $this->isJson = strpos($raw, 'json');
164
                }
165
 
166
            }
167
        } else {
168
            $accept = '';
169
        }
170
        if($headers->has('token')) {
6749 efrain 171
            $device_uuid = Functions::sanitizeFilterString($headers->get('token')->getFieldValue());
1 www 172
        } else {
173
            $device_uuid = '';
174
        }
175
        if($headers->has('secret')) {
6749 efrain 176
            $password =  Functions::sanitizeFilterString($headers->get('secret')->getFieldValue());
1 www 177
        } else {
178
            $password = '';
179
        }
180
        if($headers->has('rand')) {
6749 efrain 181
            $rand =  Functions::sanitizeFilterString($headers->get('rand')->getFieldValue());
1 www 182
        } else {
183
            $rand = 0;
184
        }
185
        if($headers->has('created')) {
6749 efrain 186
            $timestamp =  Functions::sanitizeFilterString($headers->get('created')->getFieldValue());
1 www 187
        } else {
188
            $timestamp = 0;
189
        }
190
 
191
 
3639 efrain 192
 
193
 
194
        $this->currentNetworkPlugin = new CurrentNetworkPlugin($adapter);
195
        if(!$this->currentNetworkPlugin->hasNetwork()) {
3790 efrain 196
            $this->isJson = true;
197
            $response = $event->getResponse();
198
            $this->sendResponse($response, ['success' => false, 'data' => '401 Unauthorized - Private network - not found', 'fatal' => true]);
3639 efrain 199
        }
200
 
201
        if($this->currentNetworkPlugin->getNetwork()->status == Network::STATUS_INACTIVE) {
3790 efrain 202
            $this->isJson = true;
203
            $response = $event->getResponse();
204
            $this->sendResponse($response, ['success' => false, 'data' => '401 Unauthorized - Private network - inactive', 'fatal' => true]);
205
 
3639 efrain 206
        }
207
 
208
 
1 www 209
        $this->authByHeaders = false;
210
        if($device_uuid && $password && $rand && $timestamp) {
211
            $this->authByHeaders = true;
212
 
213
 
214
            $this->isJson = true;
215
 
216
            $tokenAuthAdapter = new AuthTokenAdapter($adapter);
217
            $tokenAuthAdapter->setData($device_uuid, $password, $timestamp, $rand);
218
 
219
            $authService = new AuthenticationService();
220
            $result = $authService->authenticate($tokenAuthAdapter);
221
            if($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
222
                $response = $event->getResponse();
223
 
224
                $this->sendResponse($response, ['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
225
            }
210 efrain 226
 
227
 
228
 
229
 
230
 
1 www 231
        }
3639 efrain 232
 
1 www 233
 
3639 efrain 234
 
235
        if(empty($_SERVER['REDIRECT_URL'])) {
236
            if(empty($_SERVER['REQUEST_URI'])) {
237
                $routeName = '';
238
 
239
            } else {
240
                $routeName = $_SERVER['REQUEST_URI'];
241
            }
242
 
243
        } else {
244
            $routeName = $_SERVER['REDIRECT_URL'];
245
 
246
        }
247
 
210 efrain 248
 
3639 efrain 249
        $routeName = strtolower(trim($routeName));
250
        if(strlen($routeName) > 0 && substr($routeName, 0, 1) == '/') {
251
            $routeName = substr($routeName, 1);
252
        }
1 www 253
 
3639 efrain 254
        $this->isHtml = $this->isJson ? false : true;
255
        $this->currentUserPlugin = new CurrentUserPlugin($adapter);
1 www 256
 
210 efrain 257
 
3639 efrain 258
        if($this->authByHeaders && substr($routeName, 0, 8) == 'services') {
259
            $checkUserForNetwork = false;
260
        } else {
261
            if($this->currentUserPlugin->hasIdentity()) {
262
 
263
                $checkUserForNetwork = true;
264
            } else {
265
                $checkUserForNetwork = false;
266
            }
267
        }
268
 
269
        if($checkUserForNetwork) {
270
            if(!$routeName || in_array($routeName, ['signout', 'signin', 'home'])) {
271
                $checkUserForNetwork = false;
272
            }
273
        }
274
 
275
        if($checkUserForNetwork) {
276
 
277
 
278
 
279
            if($this->currentUserPlugin->getUser()->network_id != $this->currentNetworkPlugin->getNetworkId()) {
3790 efrain 280
 
281
                $this->isJson = true;
282
                $response = $event->getResponse();
283
                $this->sendResponse($response, ['success' => false, 'data' => '401 Unauthorized - The user is not part of this private network', 'fatal' => true]);
284
 
3639 efrain 285
            }
286
        }
287
 
288
 
289
 
1 www 290
        $this->initAcl($event);
291
        $eventManager = $event->getApplication()->getEventManager();
292
        $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, [$this,'onDispatchError'], 0);
293
        $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, [$this,'onRenderError'], 0);
294
 
295
        $sharedManager = $eventManager->getSharedManager();
296
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [$this, 'authPreDispatch'], 100);
297
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [$this, 'authPosDispatch'], -100);
298
    }
299
 
300
    public function initAcl(MvcEvent $event)
301
    {
302
 
3639 efrain 303
        $serviceManager = $event->getApplication()->getServiceManager();
304
        $adapter = $serviceManager->get('leaders-linked-db');
305
 
306
 
1 www 307
        require_once   (dirname(__DIR__) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'acl.config.php');
308
 
309
 
310
        $this->acl = new Acl();
311
        $resources = getAclResources();
1979 efrain 312
 
1 www 313
        foreach($resources as $resourceName)
314
        {
315
            $this->acl->addResource(new GenericResource($resourceName));
316
        }
317
 
318
        $usertypes = getAclUsertype();
319
        foreach($usertypes as $usertype => $resources)
320
        {
321
            $this->acl->addRole(new GenericRole($usertype));
322
            foreach ($resources as $resourceName)
323
            {
324
                $this->acl->allow($usertype, $resourceName);
325
            }
326
        }
5205 efrain 327
 
1 www 328
 
3639 efrain 329
 
330
        if($this->currentUserPlugin->hasIdentity() && $this->currentUserPlugin->getUser()->is_super_user == User::IS_SUPER_USER_YES) {
331
 
332
            $resources =  getAclSuperAdmin();
333
            foreach($resources as $resourceName)
334
            {
335
                $this->acl->allow(UserType::ADMIN, $resourceName);
336
            }
337
        }
338
 
339
 
6388 efrain 340
 
341
        $allowMyCoach = false;
5951 efrain 342
        $allowKnowledgeArea = false;
5205 efrain 343
        $allowDailyPulse = false;
344
 
7122 efrain 345
 
346
 
5205 efrain 347
        $companyMapper = CompanyMapper::getInstance($adapter);
348
        $company = $companyMapper->fetchDefaultForNetworkByNetworkId($this->currentNetworkPlugin->getNetwork()->id);
7122 efrain 349
 
350
 
5205 efrain 351
        if($company) {
7122 efrain 352
 
353
            $companyServiceMapper = CompanyServiceMapper::getInstance($adapter);
354
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::DAILY_PULSE);
355
 
356
 
5205 efrain 357
            $companyUserMapper = CompanyUserMapper::getInstance($adapter);
358
            $companyUser = $companyUserMapper->fetchOneAcceptedByCompanyIdAndUserId($company->id,  $this->currentUserPlugin->getUserId());
359
 
360
 
361
 
362
 
7122 efrain 363
            if($companyService) {
364
 
7124 efrain 365
                $dailyPulseMapper = DailyPulseMapper::getInstance($adapter);
7122 efrain 366
                $dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($company->id);
367
 
368
                if($dailyPulse) {
369
                    $privacy = $dailyPulse->privacy;
370
 
371
                } else {
372
                    $privacy = DailyPulse::PRIVACY_COMPANY;
373
                }
374
 
375
                if($privacy ==  DailyPulse::PRIVACY_PUBLIC) {
376
                    $allowDailyPulse = true;
377
                } else {
378
                    $allowDailyPulse = !empty($companyUser);
379
                }
380
 
381
 
5205 efrain 382
            }
7134 efrain 383
 
384
            $job_description_ids = [];
385
 
386
            $organizationPositionMapper = OrganizationPositionMapper::getInstance($adapter);
7135 efrain 387
            $records = $organizationPositionMapper->fetchAllByCompanyIdAndEmployeeId($company->id,  $this->currentUserPlugin->getUserId());
7134 efrain 388
            foreach($records as $record)
389
            {
390
                array_push($job_description_ids, $record->job_description_id);
391
            }
7122 efrain 392
 
5951 efrain 393
 
394
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::KNOWLEDGE_AREA);
7134 efrain 395
            if($companyService) {
396
 
397
 
398
 
399
                if($job_description_ids) {
400
 
401
 
402
                    $knowledgeAreaCategoryJobDescriptionMapper = KnowledgeAreaCategoryJobDescriptionMapper::getInstance($adapter);
403
                    $records = $knowledgeAreaCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
404
 
405
                    if(!empty($records)) {
406
                        $allowKnowledgeArea = true;
407
                    }
408
 
409
                }
410
 
7141 efrain 411
                if($companyUser && !$allowKnowledgeArea) {
412
                    $knowledgeAreaCategoryUserMapper = KnowledgeAreaCategoryUserMapper::getInstance($adapter);
413
                    $records = $knowledgeAreaCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
414
                    if(!empty($records)) {
415
                        $allowKnowledgeArea = true;
416
                    }
7134 efrain 417
                }
5951 efrain 418
            }
419
 
6388 efrain 420
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::MY_COACH);
7134 efrain 421
            if($companyService) {
422
 
423
 
424
                if($job_description_ids) {
425
 
426
 
427
                    $myCoachCategoryJobDescriptionMapper = MyCoachCategoryJobDescriptionMapper::getInstance($adapter);
428
                    $records = $myCoachCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
429
 
430
                    if(!empty($records)) {
431
                        $allowKnowledgeArea = true;
432
                    }
433
 
434
                }
435
 
7141 efrain 436
                if($companyUser && !$allowMyCoach) {
437
                    $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($adapter);
438
                    $records = $myCoachCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
439
                    if(!empty($records)) {
440
                        $allowMyCoach = true;
441
                    }
442
 
443
 
7134 efrain 444
                }
6388 efrain 445
            }
446
 
5205 efrain 447
        } else {
448
            $companyUser = '';
449
        }
450
 
6388 efrain 451
 
452
        $usertype = $this->currentUserPlugin->getUserTypeId();
5205 efrain 453
        if($allowDailyPulse) {
454
            $resources = getAclDailyPulse();
455
            foreach($resources as $resourceName)
456
            {
457
                $this->acl->allow($usertype, $resourceName);
458
            }
459
        }
460
 
5951 efrain 461
        if($allowKnowledgeArea) {
462
            $resources = getAclKnowledgeArea();
463
            foreach($resources as $resourceName)
464
            {
465
                $this->acl->allow($usertype, $resourceName);
466
            }
467
        }
5205 efrain 468
 
6388 efrain 469
        if($allowMyCoach) {
470
            $resources = getAclMyCoach();
6481 efrain 471
 
7141 efrain 472
 
6481 efrain 473
 
6388 efrain 474
            foreach($resources as $resourceName)
475
            {
476
                $this->acl->allow($usertype, $resourceName);
477
            }
478
 
479
        }
5951 efrain 480
 
481
 
6388 efrain 482
 
3639 efrain 483
        if($this->currentNetworkPlugin->getNetwork()->default == Network::DEFAULT_YES) {
484
 
485
            $usertypes = getAclUsertypeDefaultNetwork();
486
            foreach($usertypes as $usertype => $resources)
487
            {
5205 efrain 488
 
3639 efrain 489
 
5205 efrain 490
 
3639 efrain 491
                foreach ($resources as $resourceName)
492
                {
493
                    $this->acl->allow($usertype, $resourceName);
494
                }
495
            }
496
 
497
 
498
        } else {
3647 efrain 499
 
3645 efrain 500
            if($this->currentUserPlugin->hasIdentity()) {
3639 efrain 501
 
5205 efrain 502
 
3645 efrain 503
                if($company) {
3639 efrain 504
 
5205 efrain 505
 
3645 efrain 506
                    if($companyUser) {
507
                        $usertype = $this->currentUserPlugin->getUserTypeId();
3639 efrain 508
 
3645 efrain 509
                        if($companyUser->creator == CompanyUser::CREATOR_YES) {
510
 
511
                            $resources =  getAclUsertypeOtherNetworkCreator();
512
                            foreach($resources as $resourceName)
513
                            {
514
                                $this->acl->allow($usertype, $resourceName);
515
                            }
516
 
3639 efrain 517
                        }
3645 efrain 518
                        if($companyUser->creator == CompanyUser::CREATOR_NO) {
519
                            $resources =  getAclUsertypeOtherNetworkNonCreator();
520
                            foreach($resources as $resourceName)
521
                            {
522
                                $this->acl->allow($usertype, $resourceName);
523
                            }
3639 efrain 524
                        }
525
                    }
526
                }
3647 efrain 527
            }
3639 efrain 528
        }
529
 
530
 
1 www 531
        $event->getViewModel()->setVariable('acl', $this->acl);
532
 
533
    }
534
 
535
    public function onDispatchError(MvcEvent $event)
536
    {
537
        $this->processError($event);
538
    }
539
 
540
    public function onRenderError(MvcEvent $event)
541
    {
542
        $this->processError($event);
543
    }
544
 
545
    public function sendResponse(\Laminas\Http\Response $response, $data)
546
    {
547
 
548
 
549
        if($this->isJson) {
550
            $headers = $response->getHeaders();
551
            $headers->clearHeaders();
552
            $headers->addHeaderLine('Content-type', 'application/json; charset=UTF-8');
553
 
554
            $response->setStatusCode(200);
555
            $response->setContent(json_encode($data));
556
            $response->send();
557
 
558
        } else {
559
            throw new \Exception($data['data']);
560
        }
561
        exit;
562
    }
563
 
564
    public function processError(MvcEvent $event)
565
    {
566
 
567
        $request =  $event->getRequest();
568
        if((method_exists($request, 'isXmlHttpRequest') && $request->isXmlHttpRequest()) || ($this->isJson && !$this->isHtml)) {
569
 
570
            $error = $event->getError();
571
            if (!$error) {
572
                return;
573
            }
574
 
575
            $response = $event->getResponse();
576
 
577
            if('error-exception' == $error) {
578
                $exception = $event->getParam('exception');
579
                error_log($exception->getCode() . ' ' . $exception->getMessage());
580
                error_log($exception->getTraceAsString());
581
 
582
 
583
                $data = [
584
                    'success' => false,
585
                    'data' => 'An error occurred during execution; please try again later.'
586
                ];
587
 
588
            } else if('error-router-no-match' == $error) {
589
                $data = [
590
                    'success' => false,
591
                    'data' => 'Resource not found.'
592
 
593
                ];
594
            } else if(' error-controller-not-found' == $error) {
595
                $data = [
596
                    'success' => false,
597
                    'data' => 'Controller not found.'
598
 
599
                ];
600
            } else {
601
                $data = [
602
                    'success' => false,
603
                    'data' => 'Unknow error.' , 'error' => $error
604
 
605
                ];
606
            }
607
 
608
            $this->sendResponse($response, $data);
609
        }
610
 
611
        $this->initAcl($event);
612
    }
613
 
614
 
615
    public function authPreDispatch(MvcEvent $event)
616
    {
210 efrain 617
 
618
 
619
 
620
 
1 www 621
        $serviceManager = $event->getApplication()->getServiceManager();
622
        $adapter = $serviceManager->get('leaders-linked-db');
623
 
210 efrain 624
        $routeName = $event->getRouteMatch()->getMatchedRouteName();
625
 
1 www 626
 
210 efrain 627
        $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? trim(strtoupper($_SERVER['REQUEST_METHOD'])) : '';
628
 
629
        if($requestMethod == 'POST' || $requestMethod == 'PUT' || $requestMethod == 'DELETE') {
630
 
1979 efrain 631
 
1323 efrain 632
            if($this->authByHeaders && substr($routeName, 0, 8) == 'services') {
633
                $exclude = true;
634
            } else {
635
                $exclude = false;
636
 
637
                $usertypes = getAclUsertype();
638
 
639
 
640
                foreach($usertypes[UserType::GUEST] as $resourceName)
641
                {
642
                   if($routeName == $resourceName) {
643
                      $exclude = true;
644
                      break;
645
                    }
210 efrain 646
                }
647
            }
4131 efrain 648
 
4808 efrain 649
            $exclude = true;
1979 efrain 650
 
210 efrain 651
            if(!$exclude) {
652
                $httpToken = isset($_SERVER['HTTP_X_CSRF_TOKEN']) ? $_SERVER['HTTP_X_CSRF_TOKEN'] : '';
653
                $sessionToken = isset($_SESSION['token']) ? $_SESSION['token'] : uniqid();
654
 
655
                unset($_SESSION['token']);
656
                if ( $httpToken != $sessionToken) {
657
                    header("HTTP/1.1 401 Unauthorized");
658
                    exit;
659
                }
660
 
661
            }
662
        }
663
 
664
 
665
 
3639 efrain 666
        if($this->currentUserPlugin->hasIdentity())  {
667
            $user = $this->currentUserPlugin->getUser();
1 www 668
            $userTypeId = $user->usertype_id;
669
 
670
 
671
        }  else {
672
 
673
            $userTypeId = UserType::GUEST;
674
        }
675
 
210 efrain 676
 
1 www 677
        if($this->acl->isAllowed($userTypeId, $routeName)) {
3639 efrain 678
            $user = $this->currentUserPlugin->getUser();
210 efrain 679
 
1 www 680
 
681
            if($user) {
3086 efrain 682
 
683
                $updateLastActivity = true;
684
                if ('chat' == substr($routeName, 0, 4)) {
685
                    $updateLastActivity = false;
686
                }
687
                if ('inmail' == substr($routeName, 0, 6)) {
688
                    $updateLastActivity = false;
689
                }
690
                if ('check-session' == $routeName) {
691
                    $updateLastActivity = false;
692
                }
693
 
694
 
695
                if($updateLastActivity) {
696
                    $userMapper = UserMapper::getInstance($adapter);
697
                    $userMapper->updateLastActivity($user->id);
698
                }
1 www 699
            }
700
 
7330 efrain 701
            if($this->isHtml) {
702
                /*
703
                $exclude = [
704
                    'signin',
705
                    'oauth/facebook',
706
                    'oauth/facebook/cancel',
707
                    'oauth/facebook/delete',
708
                    'oauth/twitter',
709
                    'oauth/google',
710
                    'oauth/instagram',
711
                    'paypal',
712
                    'paypal/success',
713
                    'paypal/cancel',
714
                    'storage',
715
                    'storage-network',
716
                    'signout'
717
 
718
                ];
719
 
720
                if(!in_array($routeName, $exclude)) {
721
 
722
                    $url = $event->getRouter()->assemble([], ['name' => 'signin']);
723
 
724
                    $response = $event->getResponse();
725
                    $headers = $response->getHeaders();
726
                    $headers->clearHeaders();
727
                    $headers->addHeaderLine('Location', $url);
728
 
729
                    $response->setStatusCode(302);
730
                    $response->send();
731
                }*/
732
            }
733
 
1 www 734
        } else {
210 efrain 735
 
1 www 736
            if($this->authByHeaders) {
737
                $response = $event->getResponse();
738
                $headers = $response->getHeaders();
739
                $headers->clearHeaders();
740
                $headers->addHeaderLine('Content-type', 'application/json; charset=UTF-8');
741
 
742
                $response->setStatusCode(401);
743
                $response->setContent(json_encode(['success' => false, 'data' => 'Unauthorized.', 'fatal' => true]));
744
                $response->send();
745
                exit;
746
 
210 efrain 747
            }
1 www 748
 
749
 
750
            //print_r($this->routesAuthorized);
751
           // echo 'sin permiso'; exit;
752
 
753
 
3639 efrain 754
            $this->currentUserPlugin->clearIdentity();
1 www 755
 
756
 
757
            if($this->isJson) {
758
                $response = $event->getResponse();
759
                $headers = $response->getHeaders();
760
                $headers->clearHeaders();
761
                $headers->addHeaderLine('Content-type', 'application/json; charset=UTF-8');
762
 
763
                $response->setStatusCode(200);
764
                $response->setContent(json_encode(['success' => false, 'data' => 'Unauthorized.', 'fatal' => true]));
765
                $response->send();
766
            } else {
767
                $url = $event->getRouter()->assemble([], ['name' => 'signout']);
768
 
769
                $response = $event->getResponse();
770
                $headers = $response->getHeaders();
771
                $headers->clearHeaders();
772
                $headers->addHeaderLine('Location', $url);
773
 
774
                $response->setStatusCode(302);
775
                $response->send();
776
            }
777
            exit;
778
        }
779
 
780
 
781
    }
782
 
783
 
784
    public function authPosDispatch(MvcEvent $event)
785
    {
786
 
787
    }
7330 efrain 788
 
789
    /*
790
     * Array
791
(
792
    [0] => __construct
793
    [1] => __set
794
    [2] => __get
795
    [3] => __isset
796
    [4] => __unset
797
    [5] => __clone
798
    [6] => setOption
799
    [7] => getOption
800
    [8] => setOptions
801
    [9] => getOptions
802
    [10] => clearOptions
803
    [11] => getVariable
804
    [12] => setVariable
805
    [13] => setVariables
806
    [14] => getVariables
807
    [15] => clearVariables
808
    [16] => setTemplate
809
    [17] => getTemplate
810
    [18] => addChild
811
    [19] => getChildren
812
    [20] => hasChildren
813
    [21] => clearChildren
814
    [22] => getChildrenByCaptureTo
815
    [23] => setCaptureTo
816
    [24] => captureTo
817
    [25] => setTerminal
818
    [26] => terminate
819
    [27] => setAppend
820
    [28] => isAppend
821
    [29] => count
822
    [30] => getIterator
823
)
824
     */
1 www 825
 
826
 
827
}