Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 339 Rev 345
Línea 1... Línea 1...
1
<?php
1
<?php
2
declare(strict_types=1);
2
declare(strict_types = 1);
3
 
-
 
4
namespace LeadersLinked;
3
namespace LeadersLinked;
Línea 5... Línea 4...
5
 
4
 
6
use Laminas\Db\Adapter\AdapterInterface;
5
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\ModuleManager\ModuleEvent;
6
use Laminas\ModuleManager\ModuleEvent;
Línea 22... Línea 21...
22
use LeadersLinked\Mapper\CompanyUserMapper;
21
use LeadersLinked\Mapper\CompanyUserMapper;
23
use LeadersLinked\Model\CompanyUser;
22
use LeadersLinked\Model\CompanyUser;
24
use LeadersLinked\Mapper\CompanyMapper;
23
use LeadersLinked\Mapper\CompanyMapper;
25
use LeadersLinked\Mapper\CompanyServiceMapper;
24
use LeadersLinked\Mapper\CompanyServiceMapper;
26
use LeadersLinked\Model\Service;
25
use LeadersLinked\Model\Service;
27
 
-
 
28
use LeadersLinked\Library\Functions;
26
use LeadersLinked\Library\Functions;
29
use LeadersLinked\Mapper\DailyPulseMapper;
27
use LeadersLinked\Mapper\DailyPulseMapper;
30
use LeadersLinked\Model\DailyPulse;
28
use LeadersLinked\Model\DailyPulse;
31
use LeadersLinked\Mapper\OrganizationPositionMapper;
29
use LeadersLinked\Mapper\OrganizationPositionMapper;
32
use LeadersLinked\Mapper\KnowledgeAreaCategoryJobDescriptionMapper;
30
use LeadersLinked\Mapper\KnowledgeAreaCategoryJobDescriptionMapper;
Línea 38... Línea 36...
38
use LeadersLinked\Mapper\JwtTokenMapper;
36
use LeadersLinked\Mapper\JwtTokenMapper;
39
use LeadersLinked\Authentication\AuthUserIdAdapter;
37
use LeadersLinked\Authentication\AuthUserIdAdapter;
40
use LeadersLinked\Model\JwtToken;
38
use LeadersLinked\Model\JwtToken;
41
use Laminas\Http\Response;
39
use Laminas\Http\Response;
Línea 42... Línea 40...
42
 
40
 
Línea 43... Línea 41...
43
class Module 
41
class Module
-
 
42
 
44
 
43
{
45
{
44
 
46
    /**
45
    /**
47
     * 
46
     *
48
     * @var Acl
47
     * @var Acl
49
     */
48
     */
50
    private $acl;
49
    private $acl;
51
    
50
 
52
    /**
51
    /**
53
     * 
52
     *
54
     * @var AdapterInterface
53
     * @var AdapterInterface
55
     */
54
     */
56
    private $adapter;
55
    private $adapter;
57
    
56
 
58
    /**
57
    /**
59
     * 
58
     *
60
     * @var CurrentUserPlugin
59
     * @var CurrentUserPlugin
61
     */
60
     */
62
    private $currentUserPlugin;
61
    private $currentUserPlugin;
63
    
62
 
64
    /**
63
    /**
65
     *
64
     *
66
     * @var CurrentNetworkPlugin
65
     * @var CurrentNetworkPlugin
67
     */
66
     */
68
    private $currentNetworkPlugin;
67
    private $currentNetworkPlugin;
69
    
68
 
70
    /**
69
    /**
71
     * 
70
     *
72
     * @var array
71
     * @var array
73
     */
72
     */
74
    private $routesAuthorized = [];
73
    private $routesAuthorized = [];
75
    
74
 
76
    /**
75
    /**
77
     * 
76
     *
78
     * @var boolean
77
     * @var boolean
79
     */
78
     */
80
    private $authByOTP = false;
79
    private $authByOTP = false;
81
    
80
 
82
    /**
81
    /**
83
     *
82
     *
84
     * @var boolean
83
     * @var boolean
85
     */
84
     */
86
    private $authByJWT = false;
85
    private $authByJWT = false;
87
    
86
 
88
    /**
87
    /**
89
     *
88
     *
90
     * @var int
89
     * @var int
91
     */
-
 
92
    private $jwtID = 0;
90
     */
93
    
91
    private $jwtID = 0;
94
    
92
 
95
    /**
93
    /**
96
     * 
94
     *
97
     * @var JwtToken
95
     * @var JwtToken
98
     */
-
 
99
    private  $jwtToken;
96
     */
100
    
97
    private $jwtToken;
101
    
98
 
102
    /**
99
    /**
103
     * 
100
     *
104
     * @var array
101
     * @var array
105
     */
-
 
106
    private $config;
102
     */
107
    
-
 
108
    
103
    private $config;
109
    
104
 
110
    public function init(ModuleManager $moduleManager)
-
 
111
    {
-
 
112
 
105
    public function init(ModuleManager $moduleManager)
113
        
106
    {
-
 
107
        $events = $moduleManager->getEventManager();
-
 
108
        $events->attach(ModuleEvent::EVENT_MERGE_CONFIG, array(
-
 
109
            $this,
114
        $events = $moduleManager->getEventManager();
110
            'onMergeConfig'
115
        $events->attach(ModuleEvent::EVENT_MERGE_CONFIG, array($this, 'onMergeConfig'));
111
        ));
116
    }
112
    }
117
    
113
 
118
    public function onMergeConfig(ModuleEvent $event)
114
    public function onMergeConfig(ModuleEvent $event)
119
    {
115
    {
120
        $configListener = $event->getConfigListener();
116
        $configListener = $event->getConfigListener();
121
        $this->config   = $configListener->getMergedConfig(false);
117
        $this->config = $configListener->getMergedConfig(false);
122
            
118
 
123
        $reader = new Ini();
119
        $reader = new Ini();
124
        $data = $reader->fromFile('config/leaderslinked.ini');
120
        $data = $reader->fromFile('config/leaderslinked.ini');
125
            
121
 
126
        $prefix = 'leaderslinked';
-
 
127
        foreach($data as $section => $pairs)
122
        $prefix = 'leaderslinked';
128
        {
-
 
129
            foreach($pairs as $key => $value)
123
        foreach ($data as $section => $pairs) {
130
            {
124
            foreach ($pairs as $key => $value) {
131
                $this->config[$prefix . '.' . $section . '.' . $key] = $value;
125
                $this->config[$prefix . '.' . $section . '.' . $key] = $value;
132
            }
126
            }
133
        }
127
        }
134
        $configListener->setMergedConfig($this->config);
-
 
135
    }
128
        $configListener->setMergedConfig($this->config);
136
    
129
    }
137
    
130
 
138
    public function getConfig() : array
131
    public function getConfig(): array
139
    {
132
    {
Línea 140... Línea 133...
140
        return include __DIR__ . '/../config/module.config.php';
133
        return include __DIR__ . '/../config/module.config.php';
141
    }
134
    }
142
 
-
 
143
    public function onBootstrap(MvcEvent $event)
135
 
144
    {
136
    public function onBootstrap(MvcEvent $event)
Línea 145... Línea -...
145
        
-
 
146
        $timezone = $this->config['leaderslinked.runmode.timezone'];
137
    {
147
        date_default_timezone_set($timezone);
138
        $timezone = $this->config['leaderslinked.runmode.timezone'];
148
 
139
        date_default_timezone_set($timezone);
149
        
140
 
150
        header('Access-Control-Allow-Origin: *');
-
 
Línea 151... Línea 141...
151
        header('Access-Control-Allow-Headers: *');
141
        header('Access-Control-Allow-Origin: *');
152
        header('Access-Control-Allow-Method: POST, GET, HEAD, OPTIONS');
142
        header('Access-Control-Allow-Headers: *');
153
        header('Access-Control-Max-Age: 86400');
143
        header('Access-Control-Allow-Method: POST, GET, HEAD, OPTIONS');
154
        
144
        header('Access-Control-Max-Age: 86400');
155
 
145
 
156
        $response = $event->getResponse();
-
 
157
        Functions::addCrossSiteToResponse($response);
146
        $response = $event->getResponse();
158
        $event->setResponse($response);
147
        Functions::addCrossSiteToResponse($response);
159
        
148
        $event->setResponse($response);
-
 
149
 
-
 
150
        $serviceManager = $event->getApplication()->getServiceManager();
-
 
151
 
160
        $serviceManager = $event->getApplication()->getServiceManager();
152
        $eventManager = $event->getApplication()->getEventManager();
-
 
153
        $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, [
-
 
154
            $this,
-
 
155
            'onDispatchError'
161
        
156
        ], 0);
162
        
157
        $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, [
163
        $eventManager = $event->getApplication()->getEventManager();
158
            $this,
164
        $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, [$this,'onDispatchError'], 0);
159
            'onRenderError'
165
        $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, [$this,'onRenderError'], 0);
160
        ], 0);
166
        
161
 
167
        $adapter = $serviceManager->get('leaders-linked-db');
162
        $adapter = $serviceManager->get('leaders-linked-db');
168
      
163
 
Línea 169... Línea 164...
169
        /*
164
        /*
170
        $session = $serviceManager->get('leaders-linked-session');
-
 
171
        $session->start();
-
 
172
        $session->regenerateId(true);
165
         * $session = $serviceManager->get('leaders-linked-session');
173
*/
-
 
174
 
-
 
175
        $translator = $serviceManager->get('MvcTranslator');
166
         * $session->start();
176
        $translator->addTranslationFile(
167
         * $session->regenerateId(true);
177
            'phpArray',
-
 
178
            __DIR__ . '/i18n/validate.php',
-
 
179
            'default'
-
 
180
            );
-
 
181
        
-
 
182
        $translator->addTranslationFile(
-
 
183
            'phpArray',
-
 
184
            __DIR__ . '/i18n/spanish.php',
-
 
185
            'default'
168
         */
186
            );
169
 
187
        
-
 
188
 
170
        $translator = $serviceManager->get('MvcTranslator');
189
        
171
        $translator->addTranslationFile('phpArray', __DIR__ . '/i18n/validate.php', 'default');
190
        
172
 
191
        
173
        $translator->addTranslationFile('phpArray', __DIR__ . '/i18n/spanish.php', 'default');
192
        \Laminas\Validator\AbstractValidator::setDefaultTranslator($translator);
174
 
193
        
175
        \Laminas\Validator\AbstractValidator::setDefaultTranslator($translator);
194
        
176
 
195
        $headers  = $event->getRequest()->getHeaders();
177
        $headers = $event->getRequest()->getHeaders();
196
        if($headers->has('token')) {
178
        if ($headers->has('token')) {
197
            $device_uuid = Functions::sanitizeFilterString($headers->get('token')->getFieldValue());
179
            $device_uuid = Functions::sanitizeFilterString($headers->get('token')->getFieldValue());
198
        } else {
180
        } else {
199
            $device_uuid = '';
181
            $device_uuid = '';
200
        }
182
        }
201
        if($headers->has('secret')) {
183
        if ($headers->has('secret')) {
202
            $password =  Functions::sanitizeFilterString($headers->get('secret')->getFieldValue());
184
            $password = Functions::sanitizeFilterString($headers->get('secret')->getFieldValue());
203
        } else {
185
        } else {
204
            $password = '';
186
            $password = '';
205
        }
187
        }
206
        if($headers->has('rand')) {
188
        if ($headers->has('rand')) {
207
            $rand =  Functions::sanitizeFilterString($headers->get('rand')->getFieldValue());
189
            $rand = Functions::sanitizeFilterString($headers->get('rand')->getFieldValue());
208
        } else {
190
        } else {
209
            $rand = 0;
191
            $rand = 0;
210
        }
-
 
211
        if($headers->has('created')) {
-
 
Línea 212... Línea 192...
212
            $timestamp =  Functions::sanitizeFilterString($headers->get('created')->getFieldValue());
192
        }
213
        } else {
193
        if ($headers->has('created')) {
214
            $timestamp = 0;
194
            $timestamp = Functions::sanitizeFilterString($headers->get('created')->getFieldValue());
215
        }
195
        } else {
216
        
196
            $timestamp = 0;
217
 
197
        }
218
 
198
 
219
        $this->currentNetworkPlugin = CurrentNetworkPlugin::getInstance($adapter);
199
        $this->currentNetworkPlugin = CurrentNetworkPlugin::getInstance($adapter);
220
        if(!$this->currentNetworkPlugin->hasNetwork()) {
200
        if (! $this->currentNetworkPlugin->hasNetwork()) {
221
            $this->currentNetworkPlugin->fetchDefaultNetwork();
201
            $this->currentNetworkPlugin->fetchDefaultNetwork();
222
        }
202
        }
-
 
203
 
-
 
204
        if (! $this->currentNetworkPlugin->hasNetwork()) {
223
        
205
 
-
 
206
            $this->fetchDefaultNetwork();
-
 
207
 
224
        if(!$this->currentNetworkPlugin->hasNetwork()) {
208
            $response = $event->getResponse();
225
            
-
 
226
            $this->fetchDefaultNetwork();
209
            $code = 200;
227
            
210
            $content = json_encode([
228
            $response = $event->getResponse();
211
                'success' => false,
229
            $code = 200;
212
                'data' => '200 Unauthorized - Private network - not found',
230
            $content = json_encode(['success' => false, 'data' => '200 Unauthorized - Private network - not found', 'fatal' => true]);
213
                'fatal' => true
231
            $this->sendResponse($response, $code, $content);
214
            ]);
-
 
215
            $this->sendResponse($response, $code, $content);
-
 
216
        }
232
 
217
 
-
 
218
        if ($this->currentNetworkPlugin->getNetwork()->status == Network::STATUS_INACTIVE) {
-
 
219
 
233
        }
220
            $response = $event->getResponse();
234
        
-
 
235
        if($this->currentNetworkPlugin->getNetwork()->status == Network::STATUS_INACTIVE) {
221
            $code = 200;
236
            
-
 
Línea 237... Línea -...
237
            $response = $event->getResponse();
-
 
238
            $code = 200;
-
 
239
            $content = json_encode(['success' => false, 'data' => '200 Unauthorized - Private network - inactive', 'fatal' => true]);
222
            $content = json_encode([
240
            $this->sendResponse($response, $code, $content);
223
                'success' => false,
241
 
224
                'data' => '200 Unauthorized - Private network - inactive',
Línea 242... Línea -...
242
        }
-
 
243
        
225
                'fatal' => true
244
 
226
            ]);
245
        
227
            $this->sendResponse($response, $code, $content);
246
        
228
        }
247
        $this->authByOTP = false;
229
 
248
        if($device_uuid && $password && $rand && $timestamp) {
230
        $this->authByOTP = false;
249
            $this->authByOTP = true;
231
        if ($device_uuid && $password && $rand && $timestamp) {
250
 
232
            $this->authByOTP = true;
251
            
233
 
-
 
234
            $tokenAuthAdapter = new AuthTokenAdapter($adapter);
-
 
235
            $tokenAuthAdapter->setData($device_uuid, $password, $timestamp, $rand);
252
            $tokenAuthAdapter = new AuthTokenAdapter($adapter);
236
 
-
 
237
            $authService = new AuthenticationService();
-
 
238
            $result = $authService->authenticate($tokenAuthAdapter);
253
            $tokenAuthAdapter->setData($device_uuid, $password, $timestamp, $rand);
239
            if ($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
254
            
-
 
255
            $authService = new AuthenticationService();
240
 
256
            $result = $authService->authenticate($tokenAuthAdapter);
-
 
257
            if($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
241
                $response = $event->getResponse();
258
                
242
                $code = 200;
259
                $response = $event->getResponse();
243
                $content = json_encode([
260
                $code = 200;
244
                    'success' => false,
261
                $content = json_encode(['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
245
                    'data' => $result->getMessages()[0],
262
                $this->sendResponse($response, $code, $content);
246
                    'fatal' => true
263
 
247
                ]);
264
            }
248
                $this->sendResponse($response, $code, $content);
265
            
249
            }
266
        }
-
 
Línea 267... Línea 250...
267
        
250
        }
Línea 268... Línea -...
268
        $this->jwtID = 0;
-
 
269
        $this->authByJWT = false;
251
 
270
        $headers = getallheaders();
252
        $this->jwtID = 0;
271
        
253
        $this->authByJWT = false;
272
        if(!empty($headers['authorization']) || !empty($headers['Authorization'])) {
254
        $headers = getallheaders();
273
            
-
 
274
            $token = trim(empty($headers['authorization']) ? $headers['Authorization'] : $headers['authorization']);
255
 
275
            
256
        if (! empty($headers['authorization']) || ! empty($headers['Authorization'])) {
276
 
257
 
277
            if (substr($token, 0, 6 ) == 'Bearer') {
-
 
278
 
-
 
279
                
258
            $token = trim(empty($headers['authorization']) ? $headers['Authorization'] : $headers['authorization']);
280
                $token = trim(substr($token, 7));
259
 
281
                
260
            if (substr($token, 0, 6) == 'Bearer') {
282
                if(!empty($this->config['leaderslinked.jwt.key'])) {
261
 
-
 
262
                $token = trim(substr($token, 7));
-
 
263
 
283
                    $key = $this->config['leaderslinked.jwt.key'];
264
                if (! empty($this->config['leaderslinked.jwt.key'])) {
-
 
265
                    $key = $this->config['leaderslinked.jwt.key'];
-
 
266
 
284
                    
267
                    try {
285
       
-
 
286
                    try { 
-
 
287
                        $payload = JWT::decode($token, new Key($key, 'HS256'));
-
 
288
                        
268
                        $payload = JWT::decode($token, new Key($key, 'HS256'));
289
                        
269
                        if (empty($payload->iss) || $payload->iss != $_SERVER['HTTP_HOST']) {
290
                        if(empty($payload->iss) || $payload->iss != $_SERVER['HTTP_HOST']) {
270
 
291
                            
271
                            $response = $event->getResponse();
292
                            $response = $event->getResponse();
272
                            $code = 200;
293
                            $code = 200;
273
                            $content = json_encode([
294
                            $content = json_encode(['success' => false, 'data' => 'Unauthorized - JWT - Wrong server', 'fatal' => true]);
274
                                'success' => false,
295
                            $this->sendResponse($response, $code, $content);
275
                                'data' => 'Unauthorized - JWT - Wrong server',
296
                            
276
                                'fatal' => true
297
 
277
                            ]);
298
                            
278
                            $this->sendResponse($response, $code, $content);
299
                        }
279
                        }
300
                        
280
 
301
                        $uuid = empty($payload->uuid) ? '' : $payload->uuid;
281
                        $uuid = empty($payload->uuid) ? '' : $payload->uuid;
302
                        if($uuid) {
282
                        if ($uuid) {
303
                            $jwtTokenMapper = JwtTokenMapper::getInstance($adapter);
283
                            $jwtTokenMapper = JwtTokenMapper::getInstance($adapter);
304
                            $jwtToken = $jwtTokenMapper->fetchOneByUuid($uuid);
284
                            $jwtToken = $jwtTokenMapper->fetchOneByUuid($uuid);
305
                            if($jwtToken) {
285
                            if ($jwtToken) {
306
                                
286
 
307
                                $this->jwtID = $jwtToken->id;
287
                                $this->jwtID = $jwtToken->id;
308
                                
288
 
309
                                $_SESSION['aes'] = $jwtToken->aes;
289
                                $_SESSION['aes'] = $jwtToken->aes;
-
 
290
 
-
 
291
                                if ($jwtToken->user_id) {
310
                                
292
                                    $authByUserId = new AuthUserIdAdapter($adapter);
-
 
293
                                    $authByUserId->setData($jwtToken->user_id);
-
 
294
 
311
                                if($jwtToken->user_id) {
295
                                    $authService = new AuthenticationService();
312
                                    $authByUserId = new AuthUserIdAdapter($adapter);
-
 
313
                                    $authByUserId->setData($jwtToken->user_id);
296
                                    $result = $authService->authenticate($authByUserId);
314
                                    
-
 
315
                                    $authService = new AuthenticationService();
-
 
316
                                    $result = $authService->authenticate($authByUserId);
297
                                    if ($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
317
                                    if($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
-
 
318
                                        
-
 
-
 
298
 
319
                                        $response = $event->getResponse();
299
                                        $response = $event->getResponse();
320
                                        $code = 200;
300
                                        $code = 200;
321
                                        $content = json_encode(['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
301
                                        $content = json_encode([
-
 
302
                                            'success' => false,
-
 
303
                                            'data' => $result->getMessages()[0],
322
                                        $this->sendResponse($response, $code, $content);
304
                                            'fatal' => true
-
 
305
                                        ]);
-
 
306
                                        $this->sendResponse($response, $code, $content);
323
                                        
307
                                    }
324
                                    }
-
 
325
                                    
308
                                }
326
                                   
-
 
327
                                }
309
                            } 
328
                                
310
                            else {
329
                                
311
                                $response = $event->getResponse();
330
                            } else {
312
                                $code = 200;
331
                                $response = $event->getResponse();
313
                                $content = json_encode([
-
 
314
                                    'success' => false,
-
 
315
                                    'data' => 'Unauthorized - JWT - Expired',
332
                                $code = 200;
316
                                    'fatal' => true
-
 
317
                                ]);
-
 
318
                                $this->sendResponse($response, $code, $content);
333
                                $content = json_encode(['success' => false, 'data' => 'Unauthorized - JWT - Expired', 'fatal' => true]);
319
                            }
334
                                $this->sendResponse($response, $code, $content);
-
 
335
 
320
                        }
336
                            }
321
                    } catch (\Exception $e) {
337
                            
322
 
338
                        }
323
                        $response = $event->getResponse();
Línea 339... Línea -...
339
                    } catch(\Exception $e) {
-
 
340
                        
-
 
341
                        $response = $event->getResponse();
324
                        $code = 200;
342
                        $code = 200;
325
                        $content = json_encode([
343
                        $content = json_encode(['success' => false, 'data' => 'Unauthorized - JWT - Wrong key', 'fatal' => true]);
326
                            'success' => false,
344
                        $this->sendResponse($response, $code, $content);
-
 
345
 
327
                            'data' => 'Unauthorized - JWT - Wrong key',
346
                    }
328
                            'fatal' => true
347
                }
329
                        ]);
348
            }
-
 
349
        }
330
                        $this->sendResponse($response, $code, $content);
350
 
331
                    }
351
        
-
 
352
        
332
                }
353
        if(empty($_SERVER['REDIRECT_URL'])) {
-
 
Línea 354... Línea 333...
354
            if(empty($_SERVER['REQUEST_URI'])) {
333
            }
355
                $routeName = '';
334
        }
356
                
335
 
357
            } else {
336
        if (empty($_SERVER['REDIRECT_URL'])) {
358
                $routeName = $_SERVER['REQUEST_URI'];
337
            if (empty($_SERVER['REQUEST_URI'])) {
359
            }
338
                $routeName = '';
360
            
339
            } else {
361
        } else {
-
 
362
            $routeName = $_SERVER['REDIRECT_URL'];
340
                $routeName = $_SERVER['REQUEST_URI'];
363
            
-
 
364
        }
341
            }
365
        
342
        } else {
366
 
343
            $routeName = $_SERVER['REDIRECT_URL'];
-
 
344
        }
-
 
345
 
367
        $routeName = strtolower(trim($routeName));
346
        $routeName = strtolower(trim($routeName));
-
 
347
        if (strlen($routeName) > 0 && substr($routeName, 0, 1) == '/') {
-
 
348
            $routeName = substr($routeName, 1);
368
        if(strlen($routeName) > 0 && substr($routeName, 0, 1) == '/') {
349
        }
369
            $routeName = substr($routeName, 1);
350
 
370
        }
-
 
371
        
351
        $this->currentUserPlugin = CurrentUserPlugin::getInstance($adapter);
372
        $this->currentUserPlugin = CurrentUserPlugin::getInstance($adapter);
352
        if ($this->currentUserPlugin->hasIdentity()) {
373
        if($this->currentUserPlugin->hasIdentity()) {
353
 
374
            
354
            if (User::STATUS_BANNED == $this->currentUserPlugin->getUser()->status) {
375
  
355
 
376
            
356
                $code = 200;
377
            if(User::STATUS_BANNED == $this->currentUserPlugin->getUser()->status) {
357
                $content = json_encode([
378
                
358
                    'success' => false,
379
                $code = 200;
359
                    'data' => '403 Forbidden - Banned',
380
                $content = json_encode(['success' => false, 'data' => '403 Forbidden - Banned', 'fatal' => true]);
360
                    'fatal' => true
381
                $this->sendResponse($response, $code, $content);
361
                ]);
382
            }
362
                $this->sendResponse($response, $code, $content);
383
            
363
            }
384
        }
364
        }
385
        
365
 
-
 
366
        if ($this->authByOTP && substr($routeName, 0, 8) == 'services') {
-
 
367
            $checkUserForNetwork = false;
-
 
368
        } else {
-
 
369
            if ($this->currentUserPlugin->hasIdentity()) {
386
        if($this->authByOTP && substr($routeName, 0, 8) == 'services') {
370
 
387
            $checkUserForNetwork = false;
371
                $checkUserForNetwork = true;
388
        } else {
372
            } else {
389
            if($this->currentUserPlugin->hasIdentity()) {
373
                $checkUserForNetwork = false;
390
            
374
            }
391
                $checkUserForNetwork = true;
-
 
392
            } else {
-
 
393
                $checkUserForNetwork = false;
375
        }
394
            }
376
 
395
        }
377
        if ($checkUserForNetwork) {
396
        
378
            if (! $routeName || in_array($routeName, [
-
 
379
                'signout',
-
 
380
                'signin',
397
        if($checkUserForNetwork) {
381
                'home'
-
 
382
            ])) {
-
 
383
                $checkUserForNetwork = false;
398
            if(!$routeName || in_array($routeName, ['signout', 'signin', 'home'])) {
384
            }
399
                $checkUserForNetwork = false;
385
        }
400
            }
386
 
401
        }
387
        if ($checkUserForNetwork) {
402
        
-
 
403
        if($checkUserForNetwork) {
388
 
404
        
-
 
405
 
389
            if ($this->currentUserPlugin->getUser()->network_id != $this->currentNetworkPlugin->getNetworkId()) {
406
            
-
 
Línea 407... Línea -...
407
            if($this->currentUserPlugin->getUser()->network_id != $this->currentNetworkPlugin->getNetworkId()) {
-
 
408
           
390
 
409
                $response = $event->getResponse();
391
                $response = $event->getResponse();
-
 
392
                $content = json_encode([
-
 
393
                    'success' => false,
-
 
394
                    'data' => '200 Unauthorized - The user is not part of this private network',
410
                $content =  json_encode(['success' => false, 'data' => '200 Unauthorized - The user is not part of this private network', 'fatal' => true]);
395
                    'fatal' => true
-
 
396
                ]);
-
 
397
                $this->sendResponse($response, 200, $content);
-
 
398
                exit();
411
                $this->sendResponse($response, 200, $content);
399
            }
412
                exit;                
400
        }
413
            }
401
 
414
        }
402
        $this->initAcl($event);
415
        
-
 
416
        
403
 
417
        
404
        $sharedManager = $eventManager->getSharedManager();
418
        $this->initAcl($event);
-
 
419
       
405
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [
420
 
406
            $this,
421
        
-
 
422
        $sharedManager = $eventManager->getSharedManager();
407
            'authPreDispatch'
423
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [$this, 'authPreDispatch'], 100);
408
        ], 100);
424
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [$this, 'authPosDispatch'], -100);
409
        $sharedManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [
Línea 425... Línea 410...
425
    }
410
            $this,
426
    
-
 
427
    public function initAcl(MvcEvent $event)
411
            'authPosDispatch'
428
    {
412
        ], - 100);
429
        
413
    }
430
        $serviceManager = $event->getApplication()->getServiceManager();
414
 
431
        $adapter = $serviceManager->get('leaders-linked-db');
415
    public function initAcl(MvcEvent $event)
432
        
-
 
433
        
416
    {
434
        require_once   (dirname(__DIR__) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'acl.config.php');
417
        $serviceManager = $event->getApplication()->getServiceManager();
435
        
-
 
436
        
418
        $adapter = $serviceManager->get('leaders-linked-db');
437
        $this->acl = new Acl();
419
 
438
        $resources = getAclResources();
420
        require_once (dirname(__DIR__) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'acl.config.php');
Línea 439... Línea -...
439
 
-
 
440
        foreach($resources as $resourceName)
-
 
441
        {
421
 
442
            $this->acl->addResource(new GenericResource($resourceName));
422
        $this->acl = new Acl();
443
        }
423
        $resources = getAclResources();
444
        
424
 
445
        $usertypes = getAclUsertype();
-
 
446
        foreach($usertypes as $usertype => $resources)
425
        foreach ($resources as $resourceName) {
447
        {
426
            $this->acl->addResource(new GenericResource($resourceName));
448
            $this->acl->addRole(new GenericRole($usertype));
427
        }
449
            foreach ($resources as $resourceName)
-
 
450
            {
428
 
451
                $this->acl->allow($usertype, $resourceName);
429
        $usertypes = getAclUsertype();
452
            }
430
        foreach ($usertypes as $usertype => $resources) {
453
        }
431
            $this->acl->addRole(new GenericRole($usertype));
454
 
432
            foreach ($resources as $resourceName) {
455
        
433
                $this->acl->allow($usertype, $resourceName);
456
 
434
            }
457
        if($this->currentUserPlugin->hasIdentity()) { 
435
        }
458
            $user_id = $this->currentUserPlugin->getUserId();
436
 
459
            
437
        if ($this->currentUserPlugin->hasIdentity()) {
460
            if($this->currentUserPlugin->getUser()->is_super_user == User::IS_SUPER_USER_YES) {
-
 
461
   
438
            $user_id = $this->currentUserPlugin->getUserId();
462
            
439
 
463
                $resources =  getAclSuperAdmin();
440
            if ($this->currentUserPlugin->getUser()->is_super_user == User::IS_SUPER_USER_YES) {
464
                foreach($resources as $resourceName)
441
 
465
                {
442
                $resources = getAclSuperAdmin();
466
                    $this->acl->allow(UserType::ADMIN, $resourceName);
443
                foreach ($resources as $resourceName) {
467
                }
444
                    $this->acl->allow(UserType::ADMIN, $resourceName);
468
            }
445
                }
469
        } else {
-
 
470
            $user_id = 0;
-
 
471
        }
-
 
Línea 472... Línea -...
472
        
-
 
473
        $allowMyCoach = false;
-
 
474
        $allowKnowledgeArea = false;
446
            }
475
        $allowDailyPulse = false;
447
        } else {
476
        
-
 
477
        
448
            $user_id = 0;
478
        if( $user_id) {
449
        }
479
            $allowMicrolearning = $this->isMicroLeargningAccessGranted($adapter, $user_id);
450
 
480
            $allowHabit = $this->isHabitsAccessGranted($adapter, $user_id);
451
        $allowMyCoach = false;
481
        } else {
452
        $allowKnowledgeArea = false;
482
            $allowMicrolearning = false;
-
 
483
            $allowHabit =  false;
453
        $allowDailyPulse = false;
484
        }
454
 
485
        
455
        if ($user_id) {
486
        
-
 
487
        
-
 
488
 
-
 
489
        
456
            $allowMicrolearning = $this->isMicroLeargningAccessGranted($adapter, $user_id);
490
        
457
            $allowHabit = $this->isHabitsAccessGranted($adapter, $user_id);
491
        $companyMapper = CompanyMapper::getInstance($adapter);
458
        } else {
492
        $company = $companyMapper->fetchDefaultForNetworkByNetworkId($this->currentNetworkPlugin->getNetwork()->id);
459
            $allowMicrolearning = false;
493
        
460
            $allowHabit = false;
494
        
461
        }
495
        if($company) {
462
 
496
            
463
        $companyMapper = CompanyMapper::getInstance($adapter);
497
            $companyServiceMapper = CompanyServiceMapper::getInstance($adapter);
-
 
498
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::DAILY_PULSE);
464
        $company = $companyMapper->fetchDefaultForNetworkByNetworkId($this->currentNetworkPlugin->getNetwork()->id);
499
            
465
 
500
            
466
        if ($company) {
501
            $companyUserMapper = CompanyUserMapper::getInstance($adapter);
467
 
502
            $companyUser = $companyUserMapper->fetchOneAcceptedByCompanyIdAndUserId($company->id,  $this->currentUserPlugin->getUserId());
468
            $companyServiceMapper = CompanyServiceMapper::getInstance($adapter);
503
            
469
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::DAILY_PULSE);
504
            
470
 
505
            
471
            $companyUserMapper = CompanyUserMapper::getInstance($adapter);
506
            
472
            $companyUser = $companyUserMapper->fetchOneAcceptedByCompanyIdAndUserId($company->id, $this->currentUserPlugin->getUserId());
507
            if($companyService) {
-
 
508
                
-
 
509
                $dailyPulseMapper = DailyPulseMapper::getInstance($adapter);
473
 
510
                $dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($company->id);
474
            if ($companyService) {
511
                
475
 
512
                if($dailyPulse) {
476
                $dailyPulseMapper = DailyPulseMapper::getInstance($adapter);
513
                    $privacy = $dailyPulse->privacy;
477
                $dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($company->id);
514
                    
478
 
515
                } else {
479
                if ($dailyPulse) {
516
                    $privacy = DailyPulse::PRIVACY_COMPANY;
-
 
517
                }
480
                    $privacy = $dailyPulse->privacy;
518
                
481
                } else {
Línea 519... Línea -...
519
                if($privacy ==  DailyPulse::PRIVACY_PUBLIC) {
-
 
520
                    $allowDailyPulse = true;
482
                    $privacy = DailyPulse::PRIVACY_COMPANY;
521
                } else {
483
                }
522
                    $allowDailyPulse = !empty($companyUser);
484
 
523
                }
485
                if ($privacy == DailyPulse::PRIVACY_PUBLIC) {
524
                
-
 
525
                
486
                    $allowDailyPulse = true;
526
            }
487
                } else {
527
            
488
                    $allowDailyPulse = ! empty($companyUser);
528
            $job_description_ids = [];
489
                }
529
            
490
            }
530
            $organizationPositionMapper = OrganizationPositionMapper::getInstance($adapter);
491
 
531
            $records = $organizationPositionMapper->fetchAllByCompanyIdAndEmployeeId($company->id,  $this->currentUserPlugin->getUserId());
-
 
532
            foreach($records as $record)
492
            $job_description_ids = [];
533
            {
493
 
534
                array_push($job_description_ids, $record->job_description_id);
494
            $organizationPositionMapper = OrganizationPositionMapper::getInstance($adapter);
535
            }
495
            $records = $organizationPositionMapper->fetchAllByCompanyIdAndEmployeeId($company->id, $this->currentUserPlugin->getUserId());
536
 
496
            foreach ($records as $record) {
537
            
497
                array_push($job_description_ids, $record->job_description_id);
538
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::KNOWLEDGE_AREA);
498
            }
539
            if($companyService) {
499
 
540
                if($job_description_ids) {
500
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::KNOWLEDGE_AREA);
541
                
501
            if ($companyService) {
542
                
502
                if ($job_description_ids) {
543
                    $knowledgeAreaCategoryJobDescriptionMapper = KnowledgeAreaCategoryJobDescriptionMapper::getInstance($adapter);
503
 
544
                    $records = $knowledgeAreaCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
504
                    $knowledgeAreaCategoryJobDescriptionMapper = KnowledgeAreaCategoryJobDescriptionMapper::getInstance($adapter);
545
                    
-
 
546
                    if(!empty($records)) {
505
                    $records = $knowledgeAreaCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
547
                        $allowKnowledgeArea = true;
506
 
548
                    }
-
 
549
                
507
                    if (! empty($records)) {
550
                }
508
                        $allowKnowledgeArea = true;
551
                
509
                    }
552
                if($companyUser && !$allowKnowledgeArea) {
510
                }
553
                    $knowledgeAreaCategoryUserMapper = KnowledgeAreaCategoryUserMapper::getInstance($adapter);
511
 
554
                    $records = $knowledgeAreaCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
512
                if ($companyUser && ! $allowKnowledgeArea) {
555
                    if(!empty($records)) {
513
                    $knowledgeAreaCategoryUserMapper = KnowledgeAreaCategoryUserMapper::getInstance($adapter);
556
                        $allowKnowledgeArea = true;
-
 
557
                    }
514
                    $records = $knowledgeAreaCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
558
                }
515
                    if (! empty($records)) {
559
            }
516
                        $allowKnowledgeArea = true;
560
            
517
                    }
561
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::MY_COACH);
518
                }
562
            if($companyService) {
519
            }
563
                
520
 
564
                
521
            $companyService = $companyServiceMapper->fetchOneActiveByCompanyIdAndServiceId($company->id, Service::MY_COACH);
565
                if($job_description_ids) {
-
 
566
                    
-
 
567
                    
522
            if ($companyService) {
568
                    $myCoachCategoryJobDescriptionMapper = MyCoachCategoryJobDescriptionMapper::getInstance($adapter);
523
 
569
                    $records = $myCoachCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
-
 
570
                    
524
                if ($job_description_ids) {
571
                    if(!empty($records)) {
525
 
572
                        $allowKnowledgeArea = true;
526
                    $myCoachCategoryJobDescriptionMapper = MyCoachCategoryJobDescriptionMapper::getInstance($adapter);
573
                    }
-
 
574
                    
527
                    $records = $myCoachCategoryJobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIds($company->id, $job_description_ids);
575
                }
528
 
576
                
529
                    if (! empty($records)) {
577
                if($companyUser && !$allowMyCoach) {
530
                        $allowKnowledgeArea = true;
578
                    $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($adapter);
531
                    }
579
                    $records = $myCoachCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
-
 
580
                    if(!empty($records)) {
532
                }
581
                        $allowMyCoach = true;
533
 
582
                    }
534
                if ($companyUser && ! $allowMyCoach) {
583
                    
535
                    $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($adapter);
584
                    
536
                    $records = $myCoachCategoryUserMapper->fetchAllByUserId($companyUser->user_id);
585
                }
537
                    if (! empty($records)) {
586
            }
538
                        $allowMyCoach = true;
587
            
-
 
588
        } else {
539
                    }
589
            $companyUser = '';
540
                }
590
        }
541
            }
591
        
542
        } else {
592
        
543
            $companyUser = '';
593
        $usertype = $this->currentUserPlugin->getUserTypeId();
544
        }
594
        if($allowDailyPulse) {
545
 
595
            $resources = getAclDailyPulse();
-
 
596
            foreach($resources as $resourceName)
546
        $usertype = $this->currentUserPlugin->getUserTypeId();
597
            {
547
        if ($allowDailyPulse) {
598
                $this->acl->allow($usertype, $resourceName);
548
            $resources = getAclDailyPulse();
599
            }
-
 
600
        }
549
            foreach ($resources as $resourceName) {
601
        
550
                $this->acl->allow($usertype, $resourceName);
602
        if($allowMicrolearning) {
551
            }
603
            $resources = getAclMicrolearning();
552
        }
604
            foreach($resources as $resourceName)
-
 
605
            {
553
 
606
                $this->acl->allow($usertype, $resourceName);
554
        if ($allowMicrolearning) {
607
            }
555
            $resources = getAclMicrolearning();
608
        }
556
            foreach ($resources as $resourceName) {
609
        
557
                $this->acl->allow($usertype, $resourceName);
610
        if($allowHabit) {
558
            }
611
            $resources = getAclHabits();
-
 
612
            foreach($resources as $resourceName)
559
        }
613
            {
-
 
614
                $this->acl->allow($usertype, $resourceName);
560
 
615
            }
-
 
616
        }
561
        if ($allowHabit) {
617
        
562
            $resources = getAclHabits();
618
        
-
 
619
        if($allowKnowledgeArea) {
563
            foreach ($resources as $resourceName) {
620
            $resources = getAclKnowledgeArea();
-
 
621
            foreach($resources as $resourceName)
-
 
622
            {
-
 
623
                $this->acl->allow($usertype, $resourceName);
-
 
624
            }
-
 
625
        }
-
 
626
        
-
 
627
        if($allowMyCoach) {
-
 
628
            $resources = getAclMyCoach();
-
 
629
            
-
 
630
      
-
 
Línea -... Línea 564...
-
 
564
                $this->acl->allow($usertype, $resourceName);
Línea -... Línea 565...
-
 
565
            }
631
            
566
        }
-
 
567
 
632
            foreach($resources as $resourceName)
568
        if ($allowKnowledgeArea) {
633
            {
569
            $resources = getAclKnowledgeArea();
634
                $this->acl->allow($usertype, $resourceName);
570
            foreach ($resources as $resourceName) {
635
            }
571
                $this->acl->allow($usertype, $resourceName);
636
            
-
 
637
        }
-
 
638
        
572
            }
639
        
573
        }
640
        
574
 
641
        
-
 
642
        
575
        if ($allowMyCoach) {
643
        if($this->currentNetworkPlugin->getNetwork()->default == Network::DEFAULT_YES) {
576
            $resources = getAclMyCoach();
644
            
-
 
645
            $usertypes = getAclUsertypeDefaultNetwork();
577
 
646
            foreach($usertypes as $usertype => $resources)
578
            foreach ($resources as $resourceName) {
647
            {
579
                $this->acl->allow($usertype, $resourceName);
648
                
580
            }
649
 
581
        }
650
 
582
 
651
                foreach ($resources as $resourceName)
583
        if ($this->currentNetworkPlugin->getNetwork()->default == Network::DEFAULT_YES) {
652
                {
584
 
653
                    $this->acl->allow($usertype, $resourceName);
-
 
654
                }
585
            $usertypes = getAclUsertypeDefaultNetwork();
655
            }
586
            foreach ($usertypes as $usertype => $resources) {
656
            
-
 
657
            
587
 
658
        } else {
588
                foreach ($resources as $resourceName) {
659
          
589
                    $this->acl->allow($usertype, $resourceName);
660
            if($this->currentUserPlugin->hasIdentity()) {
590
                }
661
                
-
 
662
              
591
            }
663
                if($company) {
592
        } else {
664
                    
593
 
665
                    
594
            if ($this->currentUserPlugin->hasIdentity()) {
666
                    if($companyUser) {
595
 
667
                        $usertype = $this->currentUserPlugin->getUserTypeId();
596
                if ($company) {
668
                        
597
 
669
                        if($companyUser->creator == CompanyUser::CREATOR_YES) {
-
 
670
                            
-
 
671
                            $resources =  getAclUsertypeOtherNetworkCreator();
-
 
672
                            foreach($resources as $resourceName)
-
 
673
                            {
-
 
Línea -... Línea 598...
-
 
598
                    if ($companyUser) {
674
                                $this->acl->allow($usertype, $resourceName);
599
                        $usertype = $this->currentUserPlugin->getUserTypeId();
675
                            }
600
 
676
                            
601
                        if ($companyUser->creator == CompanyUser::CREATOR_YES) {
677
                        }
602
 
678
                        if($companyUser->creator == CompanyUser::CREATOR_NO) {
603
                            $resources = getAclUsertypeOtherNetworkCreator();
679
                            $resources =  getAclUsertypeOtherNetworkNonCreator();
604
                            foreach ($resources as $resourceName) {
680
                            foreach($resources as $resourceName)
605
                                $this->acl->allow($usertype, $resourceName);
681
                            {
606
                            }
682
                                $this->acl->allow($usertype, $resourceName);
607
                        }
683
                            }
608
                        if ($companyUser->creator == CompanyUser::CREATOR_NO) {
684
                        }
609
                            $resources = getAclUsertypeOtherNetworkNonCreator();
685
                    }
610
                            foreach ($resources as $resourceName) {
686
                }
611
                                $this->acl->allow($usertype, $resourceName);
687
            }
612
                            }
688
        }
613
                        }
689
        
614
                    }
690
        
615
                }
691
        $event->getViewModel()->setVariable('acl', $this->acl);
616
            }
692
        
617
        }
693
        
618
 
694
 
-
 
695
    }
-
 
696
    
-
 
697
    public function onDispatchError(MvcEvent $event)
619
        $event->getViewModel()->setVariable('acl', $this->acl);
698
    {
620
    }
699
        $this->processError($event);
621
 
700
    }
622
    public function onDispatchError(MvcEvent $event)
701
    
623
    {
702
    public function onRenderError(MvcEvent $event)
624
        $this->processError($event);
703
    {
625
    }
704
        $this->processError($event);
626
 
705
    }
627
    public function onRenderError(MvcEvent $event)
706
    
628
    {
707
    /**
629
        $this->processError($event);
708
     * 
630
    }
709
     * @param \Laminas\Http\Response $response
631
 
710
     * @param int $code
632
    /**
711
     * @param string $content
633
     *
712
     */
634
     * @param \Laminas\Http\Response $response
713
    public function sendResponse($response, $code, $content)
635
     * @param int $code
714
    {
636
     * @param string $content
715
 
637
     */
716
        
638
    public function sendResponse($response, $code, $content)
717
        
639
    {
718
        $headers = $response->getHeaders();
-
 
719
        $headers->clearHeaders();
640
        $headers = $response->getHeaders();
720
        $headers->addHeaderLine('Content-type', 'application/json; charset=UTF-8');
641
        $headers->clearHeaders();
721
        
642
        $headers->addHeaderLine('Content-type', 'application/json; charset=UTF-8');
722
        Functions::addCrossSiteToResponse($response);
643
 
723
        
644
        Functions::addCrossSiteToResponse($response);
724
        $response->setStatusCode($code);
645
 
725
        $response->setContent($content); //json_encode($data));
646
        $response->setStatusCode($code);
-
 
647
        $response->setContent($content); // json_encode($data));
-
 
648
        $response->send();
726
        $response->send();
649
        exit();
-
 
650
    }
-
 
651
 
727
        exit;
652
    public function processError(MvcEvent $event)
728
    }
-
 
729
    
653
    {
730
    public function processError(MvcEvent $event)
654
        $error = $event->getError();
731
    {
655
        if (! $error) {
732
        $error = $event->getError();
656
            return;
-
 
657
        }
-
 
658
 
733
        if (!$error) {
659
        $response = $event->getResponse();
-
 
660
        if ('error-exception' == $error) {
-
 
661
 
734
            return;
662
            $exception = $event->getParam('exception');
735
        }
-
 
736
            
-
 
-
 
663
            error_log($exception->getCode() . ' ' . $exception->getMessage());
Línea 737... Línea -...
737
        $response = $event->getResponse();
-
 
738
        if('error-exception' == $error) {
-
 
739
            
664
            error_log($exception->getTraceAsString());
740
     
665
 
-
 
666
            $response = $event->getResponse();
-
 
667
            $code = 200;
741
            $exception = $event->getParam('exception');
668
            $content = json_encode([
-
 
669
                'success' => false,
-
 
670
                'data' => $exception->getCode() . ' ' . $exception->getMessage(),
742
            error_log($exception->getCode() . ' ' . $exception->getMessage());
671
                'fatal' => true
743
            error_log($exception->getTraceAsString());
-
 
744
            
-
 
745
            $response = $event->getResponse();
672
            ]);
746
            $code = 200;
673
            $this->sendResponse($response, $code, $content);
747
            $content = json_encode(['success' => false, 'data' => $exception->getCode() . ' ' . $exception->getMessage(), 'fatal' => true]);
674
        } else if ('error-router-no-match' == $error) {
748
            $this->sendResponse($response, $code, $content);
675
 
-
 
676
            $response = $event->getResponse();
-
 
677
            $code = 404;
-
 
678
            $content = json_encode([
-
 
679
                'success' => false,
749
                
680
                'data' => 'error-router-no-match',
750
        } else if('error-router-no-match' == $error) {
-
 
751
            
-
 
752
            $response = $event->getResponse();
681
                'fatal' => true
Línea 753... Línea 682...
753
            $code = 404;
682
            ]);
754
            $content = json_encode(['success' => false, 'data' => 'error-router-no-match', 'fatal' => true]);
-
 
755
            $this->sendResponse($response, $code, $content);
683
            $this->sendResponse($response, $code, $content);
Línea 756... Línea -...
756
            
-
 
757
            
684
        } else if (' error-controller-not-found' == $error) {
758
 
685
 
759
        } else if(' error-controller-not-found' == $error) {
-
 
760
            
-
 
761
            $response = $event->getResponse();
-
 
762
            $code = 404;
-
 
763
            $content = json_encode(['success' => false, 'data' => 'error-controller-not-found', 'fatal' => true]);
686
            $response = $event->getResponse();
764
            $this->sendResponse($response, $code, $content);
687
            $code = 404;
765
            
688
            $content = json_encode([
766
 
689
                'success' => false,
Línea 767... Línea -...
767
        } else {
-
 
768
            $response = $event->getResponse();
690
                'data' => 'error-controller-not-found',
769
            $code = 200;
691
                'fatal' => true
770
            $content = json_encode(['success' => false, 'data' => $error, 'fatal' => true]);
692
            ]);
771
            $this->sendResponse($response, $code, $content);
-
 
772
 
693
            $this->sendResponse($response, $code, $content);
773
 
694
        } else {
774
        }
695
            $response = $event->getResponse();
775
 
696
            $code = 200;
776
        exit;
697
            $content = json_encode([
777
        
698
                'success' => false,
778
    }
699
                'data' => $error,
779
 
-
 
780
    
700
                'fatal' => true
781
    public function authPreDispatch(MvcEvent $event)
701
            ]);
782
    {
-
 
783
 
702
            $this->sendResponse($response, $code, $content);
784
  
703
        }
785
 
704
 
786
        
705
        exit();
787
        $serviceManager = $event->getApplication()->getServiceManager();
706
    }
788
        $adapter = $serviceManager->get('leaders-linked-db');
707
 
Línea -... Línea 708...
-
 
708
    public function authPreDispatch(MvcEvent $event)
Línea 789... Línea -...
789
        
-
 
790
        $routeName = $event->getRouteMatch()->getMatchedRouteName();
-
 
791
 
709
    {
792
        
-
 
793
        $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? trim(strtoupper($_SERVER['REQUEST_METHOD'])) : '';
710
        $serviceManager = $event->getApplication()->getServiceManager();
794
        
-
 
795
        if($requestMethod == 'POST') {
711
        $adapter = $serviceManager->get('leaders-linked-db');
Línea 796... Línea 712...
796
        
712
 
797
           
713
        $routeName = $event->getRouteMatch()->getMatchedRouteName();
798
            if($this->authByOTP && substr($routeName, 0, 8) == 'services') {
714
 
799
                $exclude = true;
715
        $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? trim(strtoupper($_SERVER['REQUEST_METHOD'])) : '';
800
            } else {
716
 
801
                $exclude = false;
717
        if ($requestMethod == 'POST') {
802
            
-
 
803
                $usertypes = getAclUsertype();
718
 
804
    
719
            if ($this->authByOTP && substr($routeName, 0, 8) == 'services') {
805
                
720
                $exclude = true;
806
                foreach($usertypes[UserType::GUEST] as $resourceName)
721
            } else {
807
                {
722
                $exclude = false;
808
                   if($routeName == $resourceName) {
-
 
809
                      $exclude = true;
-
 
810
                      break;
723
 
811
                    }
724
                $usertypes = getAclUsertype();
812
                }
725
 
Línea -... Línea 726...
-
 
726
                foreach ($usertypes[UserType::GUEST] as $resourceName) {
Línea 813... Línea -...
813
            }
-
 
814
 
-
 
815
 
727
                    if ($routeName == $resourceName) {
816
            if(!$exclude) {
728
                        $exclude = true;
817
                
729
                        break;
818
                $httpToken = isset($_SERVER['HTTP_X_CSRF_TOKEN']) ? $_SERVER['HTTP_X_CSRF_TOKEN'] : '';
730
                    }
819
                
-
 
820
                
731
                }
821
                
732
            }
Línea 822... Línea -...
822
                if($this->jwtID) {
-
 
823
 
-
 
824
                    $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
-
 
825
                    $jwtToken = $jwtTokenMapper->fetchOne($this->jwtID);
733
 
826
                    if($jwtToken) {
734
            if (! $exclude) {
827
                    
735
 
828
                        $sessionToken = $jwtToken->csrf;
736
                $httpToken = isset($_SERVER['HTTP_X_CSRF_TOKEN']) ? $_SERVER['HTTP_X_CSRF_TOKEN'] : '';
829
                        //$jwtToken->csrf= '';
-
 
830
                        
-
 
831
                        
737
 
832
                       // $jwtTokenMapper->update($jwtToken);
738
                if ($this->jwtID) {
833
                    } else {
739
 
834
                        $sessionToken = '';
740
                    $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
835
                    }
741
                    $jwtToken = $jwtTokenMapper->fetchOne($this->jwtID);
836
                        
-
 
Línea 837... Línea -...
837
                    
-
 
838
                } else {
-
 
839
                    $sessionToken = '';
-
 
840
                }
-
 
841
 
-
 
842
 
742
                    if ($jwtToken) {
843
                //error_log('$this->jwtID = ' . $this->jwtID . ' $httpToken = ' . $httpToken . ' $sessionToken = ' . $sessionToken);
743
 
Línea 844... Línea -...
844
                
-
 
845
               // if ( $httpToken != $sessionToken) {
744
                        $sessionToken = $jwtToken->csrf;
846
                //    $response = $event->getResponse();
745
                        // $jwtToken->csrf= '';
847
                //    $this->sendResponse($response, 200, json_encode(['success' => false, 'data' => 'Unauthorized - CSRF fail', 'fatal' => true]));
746
 
848
               // }
747
                        // $jwtTokenMapper->update($jwtToken);
849
               
748
                    } else {
850
            }
749
                        $sessionToken = '';
851
        }
750
                    }
852
 
751
                } else {
853
        
752
                    $sessionToken = '';
854
        
753
                }
855
        
754
 
856
        if($this->currentUserPlugin->hasIdentity())  {
755
                // error_log('$this->jwtID = ' . $this->jwtID . ' $httpToken = ' . $httpToken . ' $sessionToken = ' . $sessionToken);
857
            $user = $this->currentUserPlugin->getUser(); 
-
 
858
            $user_id = $user->id;
756
 
859
            $userTypeId = $user->usertype_id;
757
                // if ( $httpToken != $sessionToken) {
860
            
758
                // $response = $event->getResponse();
861
            
759
                // $this->sendResponse($response, 200, json_encode(['success' => false, 'data' => 'Unauthorized - CSRF fail', 'fatal' => true]));
862
        }  else {
760
                // }
863
            
761
            }
864
            $userTypeId = UserType::GUEST;
-
 
865
            $user_id = 0;
-
 
866
        } 
-
 
867
        
762
        }
868
 
763
 
Línea 869... Línea 764...
869
        
764
        if ($this->currentUserPlugin->hasIdentity()) {
-
 
765
            $user = $this->currentUserPlugin->getUser();
-
 
766
            $user_id = $user->id;
870
        
767
            $userTypeId = $user->usertype_id;
-
 
768
        } else {
-
 
769
 
871
        
770
            $userTypeId = UserType::GUEST;
872
        
771
            $user_id = 0;
873
        
-
 
874
        if($this->acl->isAllowed($userTypeId, $routeName)) {
-
 
875
            $user = $this->currentUserPlugin->getUser();
-
 
876
 
772
        }
877
            
-
 
878
            if($user) {
-
 
879
                
-
 
880
                $updateLastActivity = true;
-
 
881
                if ('chat' == substr($routeName, 0, 4)) {
-
 
882
                    $updateLastActivity = false;
773
 
883
                } 
-
 
Línea 884... Línea 774...
884
                if ('inmail' == substr($routeName, 0, 6)) {
774
        if ($this->acl->isAllowed($userTypeId, $routeName)) {
885
                    $updateLastActivity = false;
775
            $user = $this->currentUserPlugin->getUser();
886
                } 
776
 
887
                if ('check-session' == $routeName) {
777
            if ($user) {
888
                    $updateLastActivity = false;
778
 
889
                } 
-
 
890
               
779
                $updateLastActivity = true;
891
                
780
                if ('chat' == substr($routeName, 0, 4)) {
892
                if($updateLastActivity) {
781
                    $updateLastActivity = false;
893
                    $userMapper = UserMapper::getInstance($adapter);
782
                }
894
                    $userMapper->updateLastActivity($user->id);
783
                if ('inmail' == substr($routeName, 0, 6)) {
895
                }
784
                    $updateLastActivity = false;
896
            }
785
                }
897
            
786
                if ('check-session' == $routeName) {
898
 
787
                    $updateLastActivity = false;
899
            
-
 
900
        } else {
788
                }
901
            $response = $event->getResponse();
789
 
902
 
790
                if ($updateLastActivity) {
903
            $response->setStatusCode(200);
791
                    $userMapper = UserMapper::getInstance($adapter);
904
            $response->setContent(json_encode(['success' => false, 'data' => 'Unauthorized - Does not have permission', 'fatal' => true]));
792
                    $userMapper->updateLastActivity($user->id);
905
            $response->send();
-
 
Línea 906... Línea 793...
906
            exit;
793
                }
907
 
-
 
908
          
794
            }
909
 
795
        } else {
910
        }
796
            $response = $event->getResponse();
911
        
797
 
912
 
798
            $response->setStatusCode(200);
913
        
799
            $response->setContent(json_encode([
914
 
800
                'success' => false,
915
        
801
                'data' => 'Unauthorized - Does not have permission',
916
    }
802
                'fatal' => true
917
   
803
            ]));
918
 
804
            $response->send();
919
    public function authPosDispatch(MvcEvent $event)
805
            exit();
920
    {
806
        }
921
        //$response = $event->getResponse();
807
    }
922
       // Functions::addCrossSiteToResponse($response);
-
 
923
    }
808
 
924
    
-
 
925
    
809
    public function authPosDispatch(MvcEvent $event)
926
    /**
810
    {
927
     * 
811
        // $response = $event->getResponse();
928
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
812
        // Functions::addCrossSiteToResponse($response);
929
     * @param int $user_id
813
    }
930
     * @return boolean
814
 
931
     */
815
    /**
932
    private function isMicroLeargningAccessGranted($adapter, $user_id)
816
     *
933
    {
-
 
934
 
817
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
935
        $accessGranted = false;
818
     * @param int $user_id
936
        $capsuleUserMapper = \LeadersLinked\Mapper\MicrolearningCapsuleUserMapper::getInstance($adapter);
819
     * @return boolean
937
        $now = $capsuleUserMapper->getDatebaseNow();
820
     */
938
        
821
    private function isMicroLeargningAccessGranted($adapter, $user_id)
939
        $records = $capsuleUserMapper->fetchAllActiveByUserId($user_id);
822
    {
940
        
823
        $accessGranted = false;
941
 
-
 
942
        foreach($records as $record)
824
        $capsuleUserMapper = \LeadersLinked\Mapper\MicrolearningCapsuleUserMapper::getInstance($adapter);
943
        {
825
        $now = $capsuleUserMapper->getDatebaseNow();
944
            if($record->access != \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_UNLIMITED && $record->access != \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_PAY_PERIOD) {
826
 
945
                continue;
827
        $records = $capsuleUserMapper->fetchAllActiveByUserId($user_id);
946
            }
828
 
947
            if($record->access == \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_PAY_PERIOD) {
829
        foreach ($records as $record) {
948
                if($now < $record->paid_from || $now > $record->paid_to) {
830
            if ($record->access != \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_UNLIMITED && $record->access != \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_PAY_PERIOD) {
949
                    continue;
831
                continue;
950
                }
832
            }
951
            }
833
            if ($record->access == \LeadersLinked\Model\MicrolearningCapsuleUser::ACCESS_PAY_PERIOD) {
952
            $accessGranted = true;
834
                if ($now < $record->paid_from || $now > $record->paid_to) {
953
            break;
835
                    continue;
954
        }
836
                }
955
        
837
            }
956
        return $accessGranted;
838
            $accessGranted = true;
957
    }
839
            break;
958
    
-
 
959
    
-
 
960
    
-
 
961
    /**
840
        }