Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 17 Rev 23
Línea 31... Línea 31...
31
use LeadersLinked\Mapper\OrganizationPositionMapper;
31
use LeadersLinked\Mapper\OrganizationPositionMapper;
32
use LeadersLinked\Mapper\KnowledgeAreaCategoryJobDescriptionMapper;
32
use LeadersLinked\Mapper\KnowledgeAreaCategoryJobDescriptionMapper;
33
use LeadersLinked\Mapper\MyCoachCategoryJobDescriptionMapper;
33
use LeadersLinked\Mapper\MyCoachCategoryJobDescriptionMapper;
34
use LeadersLinked\Mapper\KnowledgeAreaCategoryUserMapper;
34
use LeadersLinked\Mapper\KnowledgeAreaCategoryUserMapper;
35
use LeadersLinked\Mapper\MyCoachCategoryUserMapper;
35
use LeadersLinked\Mapper\MyCoachCategoryUserMapper;
-
 
36
use Firebase\JWT\JWT;
-
 
37
use Firebase\JWT\Key;
-
 
38
use LeadersLinked\Mapper\JwtTokenMapper;
-
 
39
use LeadersLinked\Authentication\AuthAdapter;
-
 
40
use LeadersLinked\Authentication\AuthUserIdAdapter;
Línea 36... Línea 41...
36
 
41
 
37
class Module 
42
class Module 
38
{
43
{
39
    /**
44
    /**
Línea 68... Línea 73...
68
    
73
    
69
    /**
74
    /**
70
     * 
75
     * 
71
     * @var boolean
76
     * @var boolean
72
     */
77
     */
-
 
78
    private $authByOTP = false;
-
 
79
    
-
 
80
    /**
-
 
81
     *
-
 
82
     * @var boolean
-
 
83
     */
Línea 73... Línea 84...
73
    private $authByHeaders = false;
84
    private $authByJWT = false;
74
    
85
    
75
    
86
    
Línea 175... Línea 186...
175
            $this->sendResponse($response, ['success' => false, 'data' => '401 Unauthorized - Private network - inactive', 'fatal' => true]);
186
            $this->sendResponse($response, ['success' => false, 'data' => '401 Unauthorized - Private network - inactive', 'fatal' => true]);
176
            exit;
187
            exit;
177
        }
188
        }
Línea 178... Línea 189...
178
        
189
        
179
        
190
        
180
        $this->authByHeaders = false;
191
        $this->authByOTP = false;
Línea 181... Línea 192...
181
        if($device_uuid && $password && $rand && $timestamp) {
192
        if($device_uuid && $password && $rand && $timestamp) {
182
            $this->authByHeaders = true;
193
            $this->authByOTP = true;
Línea 192... Línea 203...
192
                
203
                
193
                $this->sendResponse($response, ['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
204
                $this->sendResponse($response, ['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
Línea 194... Línea 205...
194
            }
205
            }
-
 
206
            
-
 
207
        }
-
 
208
        
-
 
209
        $this->authByJWT = false;
-
 
210
        $headers = getallheaders();
-
 
211
        if(isset($headers['authorization'])) {
-
 
212
            
-
 
213
            $token = trim($headers['authorization']);
-
 
214
            if (substr($token, 0, 6 ) == 'Bearer') {
-
 
215
                $response = $event->getResponse();
-
 
216
                
-
 
217
                $token = trim(substr($token, 7));
-
 
218
                
-
 
219
                if(!empty($this->config['leaderslinked.jwt.key'])) {
-
 
220
                    $key = $this->config['leaderslinked.jwt.key'];
-
 
221
                    
-
 
222
       
-
 
223
                    try { 
-
 
224
                        $payload = JWT::decode($token, new Key($key, 'HS256'));
-
 
225
                        
-
 
226
                        
-
 
227
                        if(empty($payload->iss) || $payload->iss != $_SERVER['HTTP_HOST']) {
-
 
228
                            $response = $event->getResponse();
-
 
229
                            $this->sendResponse($response, ['success' => false, 'data' => 'Unauthorized - JWT - Wrong server',  'fatal'  => true]);
-
 
230
                            
-
 
231
                        }
-
 
232
                        
-
 
233
                        $uuid = empty($payload->uuid) ? '' : $payload->uuid;
-
 
234
                        if($uuid) {
-
 
235
                            $jwtTokenMapper = JwtTokenMapper::getInstance($adapter);
-
 
236
                            $jwtToken = $jwtTokenMapper->fetchOneByUuid($uuid);
-
 
237
                            if($jwtToken) {
-
 
238
                                
-
 
239
                                $_SESSION['aes'] = $jwtToken->aes;
-
 
240
                                
-
 
241
                                if($jwtToken->user_id) {
-
 
242
                                    $authByUserId = new AuthUserIdAdapter($adapter);
-
 
243
                                    $authByUserId->setData($jwtToken->user_id);
-
 
244
                                    
-
 
245
                                    $authService = new AuthenticationService();
-
 
246
                                    $result = $authService->authenticate($authByUserId);
-
 
247
                                    if($result->getCode() != \Laminas\Authentication\Result::SUCCESS) {
-
 
248
                                        $response = $event->getResponse();
-
 
249
                                        
-
 
250
                                        $this->sendResponse($response, ['success' => false, 'data' => $result->getMessages()[0], 'fatal' => true]);
-
 
251
                                    }
-
 
252
                                }
-
 
253
                                
-
 
254
                                
-
 
255
                            } else {
-
 
256
                                $response = $event->getResponse();
-
 
257
                                $this->sendResponse($response, ['success' => false, 'data' => 'Unauthorized - JWT - Expired',  'fatal'  => true]);
-
 
258
                            }
-
 
259
                            
-
 
260
                        }
-
 
261
                    } catch(\Exception $e) {
-
 
262
                        $response = $event->getResponse();
-
 
263
                        $this->sendResponse($response, ['success' => false, 'data' => 'Unauthorized - JWT - Wrong key',  'fatal'  => true]);
-
 
264
                    }
-
 
265
                }
Línea 195... Línea 266...
195
            
266
            }
196
        }
267
        }
Línea 217... Línea 288...
217
        }
288
        }
Línea 218... Línea 289...
218
        
289
        
Línea 219... Línea 290...
219
        $this->currentUserPlugin = new CurrentUserPlugin($adapter);
290
        $this->currentUserPlugin = new CurrentUserPlugin($adapter);
220
        
291
        
221
        
292
        
222
        if($this->authByHeaders && substr($routeName, 0, 8) == 'services') {
293
        if($this->authByOTP && substr($routeName, 0, 8) == 'services') {
Línea 223... Línea 294...
223
            $checkUserForNetwork = false;
294
            $checkUserForNetwork = false;
Línea 590... Línea 661...
590
        $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? trim(strtoupper($_SERVER['REQUEST_METHOD'])) : '';
661
        $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? trim(strtoupper($_SERVER['REQUEST_METHOD'])) : '';
Línea 591... Línea 662...
591
        
662
        
Línea 592... Línea 663...
592
        if($requestMethod == 'POST' || $requestMethod == 'PUT' || $requestMethod == 'DELETE') {
663
        if($requestMethod == 'POST' || $requestMethod == 'PUT' || $requestMethod == 'DELETE') {
593
        
664
        
594
           
665
           
595
            if($this->authByHeaders && substr($routeName, 0, 8) == 'services') {
666
            if($this->authByOTP && substr($routeName, 0, 8) == 'services') {
Línea 596... Línea 667...
596
                $exclude = true;
667
                $exclude = true;