Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 256 Rev 257
Línea 47... Línea 47...
47
use LeadersLinked\Model\JwtToken;
47
use LeadersLinked\Model\JwtToken;
48
use LeadersLinked\Mapper\JwtTokenMapper;
48
use LeadersLinked\Mapper\JwtTokenMapper;
49
use Firebase\JWT\JWT;
49
use Firebase\JWT\JWT;
50
use Firebase\JWT\Key;
50
use Firebase\JWT\Key;
51
use LeadersLinked\Form\Auth\SigninDebugForm;
51
use LeadersLinked\Form\Auth\SigninDebugForm;
-
 
52
use LeadersLinked\Library\ExternalCredentials;
Línea 52... Línea 53...
52
 
53
 
53
 
54
 
Línea 210... Línea 211...
210
                    
211
                    
211
 
212
 
Línea 212... Línea 213...
212
                    $userMapper = UserMapper::getInstance($this->adapter);
213
                    $userMapper = UserMapper::getInstance($this->adapter);
213
                    $user = $userMapper->fetchOne($identity['user_id']);
214
                    $user = $userMapper->fetchOne($identity['user_id']);
214
                    
215
                    
215
                    
216
  
216
                    if($token) {
217
                    if($token) {
217
                        $jwtToken->user_id = $user->id;
218
                        $jwtToken->user_id = $user->id;
Línea 361... Línea 362...
361
                    
362
                    
362
                    $hostname = trim($network->main_hostname);
363
                    $hostname = trim($network->main_hostname);
Línea 363... Línea -...
363
                    $url = 'https://' . $hostname . $url;
-
 
-
 
364
                    $url = 'https://' . $hostname . $url;
-
 
365
 
-
 
366
                    
Línea -... Línea 367...
-
 
367
                    $data = [
-
 
368
                        'redirect' => $url
-
 
369
                    ];
-
 
370
 
-
 
371
                    
-
 
372
                  
-
 
373
                            
-
 
374
                    if($currentNetwork->xmpp_active) {
-
 
375
                        $externalCredentials = ExternalCredentials::getInstancia($this->config, $this->adapter);
-
 
376
                        $externalCredentials->getUserBy($user->id);
-
 
377
                        
-
 
378
                        
-
 
379
                        $data['xmpp_domain'] = $currentNetwork->xmpp_domain;
-
 
380
                        $data['xmpp_hostname'] = $currentNetwork->xmpp_hostname;
-
 
381
                        $data['xmpp_port'] = $currentNetwork->xmpp_port;
364
 
382
                        $data['xmpp_username'] = $externalCredentials->getUsernameXmpp();
365
                    
383
                        $data['xmpp_pasword'] = $externalCredentials->getPasswordXmpp();
366
                   
384
                    }
367
 
-
 
368
                    $data = [
-
 
369
                        'success'   => true,
385
                    
-
 
386
                    $data = [
Línea 370... Línea 387...
370
                        'data'      => [
387
                        'success'   => true,
371
                            'redirect' => $url
388
                        'data'      => $data
Línea 372... Línea 389...
372
                         ]
389
                    ];
Línea 612... Línea 629...
612
                'intro'                         => $currentNetwork->intro ? $currentNetwork->intro : '',
629
                'intro'                         => $currentNetwork->intro ? $currentNetwork->intro : '',
613
                'is_logged_in'                  => $jwtToken->user_id ? true : false,
630
                'is_logged_in'                  => $jwtToken->user_id ? true : false,
Línea 614... Línea 631...
614
 
631
 
Línea -... Línea 632...
-
 
632
            ];
-
 
633
            
-
 
634
            if($currentNetwork->default == Network::DEFAULT_YES) {
-
 
635
                
-
 
636
   
-
 
637
                
-
 
638
                $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
639
                if ($currentUserPlugin->hasIdentity()) {
-
 
640
                    
-
 
641
                    
-
 
642
                    $externalCredentials = ExternalCredentials::getInstancia($this->config, $this->adapter);
-
 
643
                    $externalCredentials->getUserBy($currentUserPlugin->getUserId());
-
 
644
                    
-
 
645
       
-
 
646
                    if($currentNetwork->xmpp_active) {
-
 
647
                        $data['xmpp_domain']      = $currentNetwork->xmpp_domain;
-
 
648
                        $data['xmpp_hostname']    = $currentNetwork->xmpp_hostname;
-
 
649
                        $data['xmpp_port']        = $currentNetwork->xmpp_port;
-
 
650
                        $data['xmpp_username']    = $externalCredentials->getUsernameXmpp();
-
 
651
                        $data['xmpp_password']    = $externalCredentials->getPasswordXmpp();
-
 
652
                    }
-
 
653
                }
615
            ];
654
            }
616
            
655
            
617
            $data = [
656
            $data = [
618
                'success' => true,
657
                'success' => true,
Línea 1342... Línea 1381...
1342
                        $user->request_access = User::REQUEST_ACCESS_APPROVED;
1381
                        $user->request_access = User::REQUEST_ACCESS_APPROVED;
1343
                    } else {
1382
                    } else {
1344
                        $user->request_access = User::REQUEST_ACCESS_PENDING;
1383
                        $user->request_access = User::REQUEST_ACCESS_PENDING;
1345
                    }
1384
                    }
Línea 1346... Línea -...
1346
 
-
 
-
 
1385
 
-
 
1386
                    $externalCredentials = ExternalCredentials::getInstancia($this->config, $this->adapter);
Línea 1347... Línea 1387...
1347
 
1387
                    $externalCredentials->completeDataFromNewUser($user);
Línea 1348... Línea 1388...
1348
 
1388
 
1349
                    if ($userMapper->insert($user)) {
1389
                    if ($userMapper->insert($user)) {
Línea 1939... Línea 1979...
1939
            'success' => false,
1979
            'success' => false,
1940
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1980
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1941
        ]);
1981
        ]);
1942
    }
1982
    }
Línea 1943... Línea -...
1943
    
-
 
1944
    public function debugAction()
-
 
1945
    {
-
 
1946
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
-
 
1947
        $currentNetwork = $currentNetworkPlugin->getNetwork();
-
 
1948
        
-
 
1949
        $request = $this->getRequest();
-
 
1950
        
-
 
1951
        if ($request->isPost()) {
-
 
1952
            $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
-
 
1953
            $currentNetwork = $currentNetworkPlugin->getNetwork();
-
 
1954
            
-
 
1955
            $jwtToken = null;
-
 
1956
            $headers = getallheaders();
-
 
1957
            
-
 
1958
            
-
 
1959
            if(!empty($headers['authorization']) || !empty($headers['Authorization'])) {
-
 
1960
                
-
 
1961
                $token = trim(empty($headers['authorization']) ? $headers['Authorization'] : $headers['authorization']);
-
 
1962
                
-
 
1963
                
-
 
1964
                if (substr($token, 0, 6 ) == 'Bearer') {
-
 
1965
                    
-
 
1966
                    $token = trim(substr($token, 7));
-
 
1967
                    
-
 
1968
                    if(!empty($this->config['leaderslinked.jwt.key'])) {
-
 
1969
                        $key = $this->config['leaderslinked.jwt.key'];
-
 
1970
                        
-
 
1971
                        
-
 
1972
                        try {
-
 
1973
                            $payload = JWT::decode($token, new Key($key, 'HS256'));
-
 
1974
                            
-
 
1975
                            
-
 
1976
                            if(empty($payload->iss) || $payload->iss != $_SERVER['HTTP_HOST']) {
-
 
1977
                                return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Wrong server',  'fatal'  => true]);
-
 
1978
                            }
-
 
1979
                            
-
 
1980
                            $uuid = empty($payload->uuid) ? '' : $payload->uuid;
-
 
1981
                            $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
-
 
1982
                            $jwtToken = $jwtTokenMapper->fetchOneByUuid($uuid);
-
 
1983
                            if(!$jwtToken) {
-
 
1984
                                return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Expired',  'fatal'  => true]);
-
 
1985
                            }
-
 
1986
                            
-
 
1987
                        } catch(\Exception $e) {
-
 
1988
                            return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Wrong key',  'fatal'  => true]);
-
 
1989
                        }
-
 
1990
                    } else {
-
 
1991
                        return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - SecreteKey required',  'fatal'  => true]);
-
 
1992
                    }
-
 
1993
                } else {
-
 
1994
                    return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Bearer required',  'fatal'  => true]);
-
 
1995
                }
-
 
1996
            } else {
-
 
1997
                return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Required',  'fatal'  => true]);
-
 
1998
            }
-
 
1999
            
-
 
2000
            
-
 
2001
            $form = new  SigninDebugForm($this->config);
-
 
2002
            $dataPost = $request->getPost()->toArray();
-
 
2003
 
-
 
2004
            
-
 
2005
            $form->setData($dataPost);
-
 
2006
            
-
 
2007
            if ($form->isValid()) {
-
 
2008
                
-
 
2009
                $dataPost = (array) $form->getData();
-
 
2010
                
-
 
2011
                $email      = $dataPost['email'];
-
 
2012
                $password   = $dataPost['password'];
-
 
2013
 
-
 
2014
                
-
 
2015
                
-
 
2016
                
-
 
2017
                
-
 
2018
                $authAdapter = new AuthAdapter($this->adapter, $this->logger);
-
 
2019
                $authAdapter->setData($email, $password, $currentNetwork->id);
-
 
2020
                $authService = new AuthenticationService();
-
 
2021
                
-
 
2022
                $result = $authService->authenticate($authAdapter);
-
 
2023
                
-
 
2024
                if ($result->getCode() == AuthResult::SUCCESS) {
-
 
2025
                    
-
 
2026
                    $identity = $result->getIdentity();
-
 
2027
                    
-
 
2028
                    
-
 
2029
                    $userMapper = UserMapper::getInstance($this->adapter);
-
 
2030
                    $user = $userMapper->fetchOne($identity['user_id']);
-
 
2031
                    
-
 
2032
                    
-
 
2033
                    if($token) {
-
 
2034
                        $jwtToken->user_id = $user->id;
-
 
2035
                        $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
-
 
2036
                        $jwtTokenMapper->update($jwtToken);
-
 
2037
                    }
-
 
2038
                    
-
 
2039
                    
-
 
2040
                    $navigator = get_browser(null, true);
-
 
2041
                    $device_type    =  isset($navigator['device_type']) ? $navigator['device_type'] : '';
-
 
2042
                    $platform       =  isset($navigator['platform']) ? $navigator['platform'] : '';
-
 
2043
                    $browser        =  isset($navigator['browser']) ? $navigator['browser'] : '';
-
 
2044
                    
-
 
2045
                    
-
 
2046
                    $istablet = isset($navigator['istablet']) ?  intval($navigator['istablet']) : 0;
-
 
2047
                    $ismobiledevice = isset($navigator['ismobiledevice']) ? intval($navigator['ismobiledevice']) : 0;
-
 
2048
                    $version = isset($navigator['version']) ? $navigator['version'] : '';
-
 
2049
                    
-
 
2050
                    
-
 
2051
                    $userBrowserMapper = UserBrowserMapper::getInstance($this->adapter);
-
 
2052
                    $userBrowser = $userBrowserMapper->fetch($user->id, $device_type, $platform, $browser);
-
 
2053
                    if ($userBrowser) {
-
 
2054
                        $userBrowserMapper->update($userBrowser);
-
 
2055
                    } else {
-
 
2056
                        $userBrowser = new UserBrowser();
-
 
2057
                        $userBrowser->user_id           = $user->id;
-
 
2058
                        $userBrowser->browser           = $browser;
-
 
2059
                        $userBrowser->platform          = $platform;
-
 
2060
                        $userBrowser->device_type       = $device_type;
-
 
2061
                        $userBrowser->is_tablet         = $istablet;
-
 
2062
                        $userBrowser->is_mobile_device  = $ismobiledevice;
-
 
2063
                        $userBrowser->version           = $version;
-
 
2064
                        
-
 
2065
                        $userBrowserMapper->insert($userBrowser);
-
 
2066
                    }
-
 
2067
                    //
1983
    
2068
                    
-
 
2069
                    $ip = Functions::getUserIP();
-
 
2070
                    $ip = $ip == '127.0.0.1' ? '148.240.211.148' : $ip;
1984
   
2071
                    
-
 
2072
                    $userIpMapper = UserIpMapper::getInstance($this->adapter);
-
 
2073
                    $userIp = $userIpMapper->fetch($user->id, $ip);
-
 
2074
                    if (empty($userIp)) {
1985
    
2075
                        
-
 
2076
                        if ($this->config['leaderslinked.runmode.sandbox']) {
-
 
2077
                            $filename = $this->config['leaderslinked.geoip2.production_database'];
-
 
2078
                        } else {
-
 
2079
                            $filename = $this->config['leaderslinked.geoip2.sandbox_database'];
-
 
2080
                        }
-
 
2081
                        
-
 
2082
                        $reader = new GeoIp2Reader($filename); //GeoIP2-City.mmdb');
-
 
2083
                        $record = $reader->city($ip);
-
 
2084
                        if ($record) {
-
 
2085
                            $userIp = new UserIp();
-
 
2086
                            $userIp->user_id = $user->id;
-
 
2087
                            $userIp->city = !empty($record->city->name) ? Functions::utf8_decode($record->city->name) : '';
-
 
2088
                            $userIp->state_code = !empty($record->mostSpecificSubdivision->isoCode) ? Functions::utf8_decode($record->mostSpecificSubdivision->isoCode) : '';
-
 
2089
                            $userIp->state_name = !empty($record->mostSpecificSubdivision->name) ? Functions::utf8_decode($record->mostSpecificSubdivision->name) : '';
-
 
2090
                            $userIp->country_code = !empty($record->country->isoCode) ? Functions::utf8_decode($record->country->isoCode) : '';
-
 
2091
                            $userIp->country_name = !empty($record->country->name) ? Functions::utf8_decode($record->country->name) : '';
-
 
2092
                            $userIp->ip = $ip;
-
 
2093
                            $userIp->latitude = !empty($record->location->latitude) ? $record->location->latitude : 0;
-
 
2094
                            $userIp->longitude = !empty($record->location->longitude) ? $record->location->longitude : 0;
-
 
2095
                            $userIp->postal_code = !empty($record->postal->code) ? $record->postal->code : '';
-
 
2096
                            
-
 
2097
                            $userIpMapper->insert($userIp);
-
 
2098
                        }
-
 
2099
                    } else {
-
 
2100
                        $userIpMapper->update($userIp);
-
 
2101
                    }
-
 
2102
                    
-
 
2103
                    /*
-
 
2104
                     if ($remember) {
-
 
2105
                     $expired = time() + 365 * 24 * 60 * 60;
-
 
2106
                     
-
 
2107
                     $cookieEmail = new SetCookie('email', $email, $expired);
-
 
2108
                     } else {
-
 
2109
                     $expired = time() - 7200;
-
 
2110
                     $cookieEmail = new SetCookie('email', '', $expired);
-
 
2111
                     }
-
 
2112
                     
-
 
2113
                     
-
 
2114
                     $response = $this->getResponse();
-
 
2115
                     $response->getHeaders()->addHeader($cookieEmail);
-
 
2116
                     */
-
 
2117
                    
-
 
2118
                    
-
 
2119
                    
-
 
2120
                    
-
 
2121
                    
-
 
2122
                    $this->logger->info('Ingreso a LeadersLiked', ['user_id' => $user->id, 'ip' => Functions::getUserIP()]);
-
 
2123
                    
-
 
2124
                    $user_share_invitation = $this->cache->getItem('user_share_invitation');
-
 
2125
                    
-
 
2126
                    if ($user_share_invitation) {
-
 
2127
                        $userRedirect = $userMapper->fetchOneByUuid($user_share_invitation);
-
 
2128
                        if ($userRedirect && $userRedirect->status == User::STATUS_ACTIVE && $user->id != $userRedirect->id) {
-
 
2129
                            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
-
 
2130
                            $connection = $connectionMapper->fetchOneByUserId1AndUserId2($user->id, $userRedirect->id);
-
 
2131
                            
-
 
2132
                            if ($connection) {
-
 
2133
                                
-
 
2134
                                if ($connection->status != Connection::STATUS_ACCEPTED) {
-
 
2135
                                    $connectionMapper->approve($connection);
-
 
2136
                                }
-
 
2137
                            } else {
-
 
2138
                                $connection = new Connection();
-
 
2139
                                $connection->request_from = $user->id;
-
 
2140
                                $connection->request_to = $userRedirect->id;
-
 
2141
                                $connection->status = Connection::STATUS_ACCEPTED;
-
 
2142
                                
-
 
2143
                                $connectionMapper->insert($connection);
-
 
2144
                            }
-
 
2145
                        }
-
 
2146
                    }
-
 
2147
                    
-
 
2148
                    
-
 
2149
                    
-
 
2150
                    $data = [
-
 
2151
                        'success'   => true,
-
 
2152
                        'data'      => $this->url()->fromRoute('dashboard'),
-
 
2153
                    ];
-
 
2154
                    
-
 
2155
                    $this->cache->removeItem('user_share_invitation');
-
 
2156
                } else {
-
 
2157
                    
-
 
2158
                    $message = $result->getMessages()[0];
-
 
2159
                    if (!in_array($message, [
-
 
2160
                        'ERROR_USER_NOT_FOUND', 'ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED', 'ERROR_USER_IS_BLOCKED',
-
 
2161
                        'ERROR_USER_IS_INACTIVE', 'ERROR_ENTERED_PASS_INCORRECT_USER_IS_BLOCKED', 'ERROR_ENTERED_PASS_INCORRECT_2',
-
 
2162
                        'ERROR_ENTERED_PASS_INCORRECT_1', 'ERROR_USER_REQUEST_ACCESS_IS_PENDING', 'ERROR_USER_REQUEST_ACCESS_IS_REJECTED'
-
 
2163
                        
-
 
2164
                        
-
 
2165
                    ])) {
-
 
2166
                    }
-
 
2167
                    
-
 
2168
                    switch ($message) {
-
 
2169
                        case 'ERROR_USER_NOT_FOUND':
-
 
2170
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Email no existe', ['ip' => Functions::getUserIP()]);
-
 
2171
                            break;
-
 
2172
                            
-
 
2173
                        case 'ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED':
-
 
2174
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Email no verificado', ['ip' => Functions::getUserIP()]);
-
 
2175
                            break;
-
 
2176
                            
-
 
2177
                        case 'ERROR_USER_IS_BLOCKED':
-
 
2178
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Usuario bloqueado', ['ip' => Functions::getUserIP()]);
-
 
2179
                            break;
-
 
2180
                            
-
 
2181
                        case 'ERROR_USER_IS_INACTIVE':
-
 
2182
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Usuario inactivo', ['ip' => Functions::getUserIP()]);
-
 
2183
                            break;
-
 
2184
                            
-
 
2185
                            
-
 
2186
                        case 'ERROR_ENTERED_PASS_INCORRECT_USER_IS_BLOCKED':
-
 
2187
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - 3er Intento Usuario bloqueado', ['ip' => Functions::getUserIP()]);
-
 
2188
                            break;
-
 
2189
                            
-
 
2190
                            
-
 
2191
                        case 'ERROR_ENTERED_PASS_INCORRECT_2':
-
 
2192
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - 1er Intento', ['ip' => Functions::getUserIP()]);
-
 
2193
                            break;
-
 
2194
                            
-
 
2195
                            
-
 
2196
                        case 'ERROR_ENTERED_PASS_INCORRECT_1':
-
 
2197
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - 2do Intento', ['ip' => Functions::getUserIP()]);
-
 
2198
                            break;
-
 
2199
                            
-
 
2200
                            
-
 
2201
                        case 'ERROR_USER_REQUEST_ACCESS_IS_PENDING':
-
 
2202
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Falta verificar que pertence a la Red Privada', ['ip' => Functions::getUserIP()]);
-
 
2203
                            break;
-
 
2204
                            
-
 
2205
                        case  'ERROR_USER_REQUEST_ACCESS_IS_REJECTED':
-
 
2206
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Rechazado por no pertence a la Red Privada', ['ip' => Functions::getUserIP()]);
-
 
2207
                            break;
-
 
2208
                            
-
 
2209
                            
-
 
2210
                        default:
-
 
2211
                            $message = 'ERROR_UNKNOWN';
-
 
2212
                            $this->logger->err('Error de ingreso a LeadersLinked de ' . $email . ' - Error desconocido', ['ip' => Functions::getUserIP()]);
-
 
2213
                            break;
-
 
2214
                    }
-
 
2215
                    
-
 
2216
                    
-
 
2217
                    
-
 
2218
                    
-
 
2219
                    $data = [
-
 
2220
                        'success'   => false,
-
 
2221
                        'data'   => $message
-
 
2222
                    ];
-
 
2223
                }
-
 
2224
                
-
 
2225
                return new JsonModel($data);
-
 
2226
            } else {
-
 
2227
                $messages = [];
-
 
2228
                
-
 
2229
                
-
 
2230
                
-
 
2231
                $form_messages = (array) $form->getMessages();
-
 
2232
                foreach ($form_messages  as $fieldname => $field_messages) {
-
 
2233
                    
-
 
2234
                    $messages[$fieldname] = array_values($field_messages);
-
 
2235
                }
-
 
2236
                
-
 
2237
                return new JsonModel([
-
 
2238
                    'success'   => false,
-
 
2239
                    'data'   => $messages
-
 
2240
                ]);
-
 
2241
            }
-
 
2242
        } else if ($request->isGet()) {
-
 
2243
            
-
 
2244
            $aes = '';
-
 
2245
            $jwtToken = null;
-
 
2246
            $headers = getallheaders();
-
 
2247
            
-
 
2248
            
-
 
2249
            if(!empty($headers['authorization']) || !empty($headers['Authorization'])) {
-
 
2250
                
-
 
2251
                $token = trim(empty($headers['authorization']) ? $headers['Authorization'] : $headers['authorization']);
-
 
2252
                
-
 
2253
                
-
 
2254
                if (substr($token, 0, 6 ) == 'Bearer') {
-
 
2255
                    
-
 
2256
                    $token = trim(substr($token, 7));
-
 
2257
                    
-
 
2258
                    if(!empty($this->config['leaderslinked.jwt.key'])) {
-
 
2259
                        $key = $this->config['leaderslinked.jwt.key'];
-
 
2260
                        
-
 
2261
                        
-
 
2262
                        try {
-
 
2263
                            $payload = JWT::decode($token, new Key($key, 'HS256'));
-
 
2264
                            
-
 
2265
                            
-
 
2266
                            if(empty($payload->iss) || $payload->iss != $_SERVER['HTTP_HOST']) {
-
 
2267
                                return new JsonModel(['success' => false, 'data' => 'Unauthorized - JWT - Wrong server',  'fatal'  => true]);
-
 
2268
                            }
-
 
2269
                            
-
 
2270
                            $uuid = empty($payload->uuid) ? '' : $payload->uuid;
-
 
2271
                            $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
-
 
2272
                            $jwtToken = $jwtTokenMapper->fetchOneByUuid($uuid);
-
 
2273
                        } catch(\Exception $e) {
-
 
2274
                            //Token invalido
-
 
2275
                        }
-
 
2276
                    }
-
 
2277
                }
-
 
2278
            }
-
 
2279
            
-
 
2280
            if(!$jwtToken) {
-
 
2281
                
-
 
2282
                $aes = Functions::generatePassword(16);
-
 
2283
                
-
 
2284
                $jwtToken = new JwtToken();
-
 
2285
                $jwtToken->aes = $aes;
-
 
2286
                
-
 
2287
                $jwtTokenMapper = JwtTokenMapper::getInstance($this->adapter);
-
 
2288
                if($jwtTokenMapper->insert($jwtToken)) {
-
 
2289
                    $jwtToken = $jwtTokenMapper->fetchOne($jwtToken->id);
-
 
2290
                }
-
 
2291
                
-
 
2292
                $token = '';
-
 
2293
                
-
 
2294
                if(!empty($this->config['leaderslinked.jwt.key'])) {
-
 
2295
                    $issuedAt   = new \DateTimeImmutable();
-
 
2296
                    $expire     = $issuedAt->modify('+24 hours')->getTimestamp();
-
 
2297
                    $serverName = $_SERVER['HTTP_HOST'];
-
 
2298
                    $payload = [
-
 
2299
                        'iat'  => $issuedAt->getTimestamp(),
-
 
2300
                        'iss'  => $serverName,
-
 
2301
                        'nbf'  => $issuedAt->getTimestamp(),
-
 
2302
                        'exp'  => $expire,
-
 
2303
                        'uuid' => $jwtToken->uuid,
-
 
2304
                    ];
-
 
2305
                    
-
 
2306
                    
-
 
2307
                    $key = $this->config['leaderslinked.jwt.key'];
-
 
2308
                    $token = JWT::encode($payload, $key, 'HS256');
-
 
2309
                }
-
 
2310
            }
-
 
2311
            
-
 
2312
            
-
 
2313
            
-
 
2314
            
-
 
2315
            
-
 
2316
            
-
 
2317
            
-
 
2318
            if ($this->config['leaderslinked.runmode.sandbox']) {
-
 
2319
                $site_key      = $this->config['leaderslinked.google_captcha.sandbox_site_key'];
-
 
2320
            } else {
-
 
2321
                $site_key      = $this->config['leaderslinked.google_captcha.production_site_key'];
-
 
2322
            }
-
 
2323
            
-
 
2324
            
-
 
2325
            $access_usign_social_networks = $this->config['leaderslinked.runmode.access_usign_social_networks'];
-
 
2326
            
-
 
2327
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
-
 
2328
            if ($sandbox) {
-
 
2329
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
-
 
2330
            } else {
-
 
2331
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
-
 
2332
            }
-
 
2333
            
-
 
2334
            
-
 
2335
            
-
 
2336
            
-
 
2337
            $logo_url = $this->url()->fromRoute('storage-network', ['type' => 'logo'],['force_canonical' => true]);
-
 
2338
            $logo_url = str_replace($currentNetwork->main_hostname, $currentNetwork->service_hostname, $logo_url);
-
 
2339
            if($currentNetwork->alternative_hostname) {
-
 
2340
                $logo_url = str_replace($currentNetwork->alternative_hostname, $currentNetwork->service_hostname, $logo_url);
-
 
2341
                
-
 
2342
            }
-
 
2343
            
-
 
2344
            
-
 
2345
            $navbar_url = $this->url()->fromRoute('storage-network', ['type' => 'navbar'],['force_canonical' => true]);
-
 
2346
            $navbar_url = str_replace($currentNetwork->main_hostname, $currentNetwork->service_hostname, $navbar_url);
-
 
2347
            if($currentNetwork->alternative_hostname) {
-
 
2348
                $navbar_url = str_replace($currentNetwork->alternative_hostname, $currentNetwork->service_hostname, $navbar_url);
-
 
2349
                
-
 
2350
            }
-
 
2351
            
-
 
2352
            
-
 
2353
            $favico_url= $this->url()->fromRoute('storage-network', ['type' => 'favico'],['force_canonical' => true]);
-
 
2354
            $favico_url = str_replace($currentNetwork->main_hostname, $currentNetwork->service_hostname, $favico_url);
-
 
2355
            if($currentNetwork->alternative_hostname) {
-
 
2356
                $favico_url = str_replace($currentNetwork->alternative_hostname, $currentNetwork->service_hostname, $favico_url);
-
 
2357
                
-
 
2358
            }
-
 
2359
            
-
 
2360
            
-
 
2361
            
-
 
2362
            $data = [
-
 
2363
                'google_map_key'                => $google_map_key,
-
 
2364
                'email'                         => '',
-
 
2365
                'remember'                      => false,
-
 
2366
                'site_key'                      => $site_key,
-
 
2367
                'theme_id'                      => $currentNetwork->theme_id,
-
 
2368
                'aes'                           => $aes,
-
 
2369
                'jwt'                           => $token,
-
 
2370
                'defaultNetwork'                => $currentNetwork->default,
-
 
2371
                'access_usign_social_networks'  => $access_usign_social_networks && $currentNetwork->default == Network::DEFAULT_YES ? 'y' : 'n',
-
 
2372
                'logo_url'                      => $logo_url,
-
 
2373
                'navbar_url'                    => $navbar_url,
-
 
2374
                'favico_url'                    => $favico_url,
-
 
2375
                'intro'                         => $currentNetwork->intro ? $currentNetwork->intro : '',
-
 
2376
                'is_logged_in'                  => $jwtToken->user_id ? true : false,
-
 
2377
                
-
 
2378
            ];
-
 
2379
            
-
 
2380
            $data = [
-
 
2381
                'success' => true,
-
 
2382
                'data' =>  $data
-
 
2383
            ];
-
 
2384
            
-
 
2385
        } else {
-
 
2386
            $data = [
-
 
2387
                'success' => false,
-
 
2388
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
2389
            ];
-
 
2390
            
-
 
2391
            return new JsonModel($data);
-
 
2392
        }
-
 
2393
        
-
 
2394
        return new JsonModel($data);
-
 
2395
        
-
 
2396
        
-
 
2397
    }
1986