/** * {@inheritdoc} */ protected function authorizeUser(App $app, $email, $password) { if (isset($app['db'])) { $db = $app['db']; } else { if (isset($app['orm.em'])) { $db = $app['orm.em']->getConnection(); } else { throw new Exception("DB connection not found"); } } // User array $userArray = Users::getInstance($db)->getByEmail($email); // User for encode password $user = new User($email, $password, array('ROLE_USER'), true, true, true, true); // Encoded password $encodedPasswd = $app['security.encoder.digest']->encodePassword($password, $user->getSalt()); if ($userArray['password'] !== $encodedPasswd) { $token = false; } else { // Datetime tomorrow $date = new \DateTime('tomorrow'); // Json Web Token $jws = new SimpleJWS(array('alg' => 'RS256')); $jws->setPayload(array('uid' => $userArray['id'], 'exp' => $date->format('U'))); $privateKey = openssl_pkey_get_private('file://' . $app->getAppDir() . '/private.key', '123456789'); $jws->sign($privateKey); $token = $jws->getTokenString(); } return $token; }
/** * @dataProvider advancedUserProvider */ public function testAdvancedUser($username, $password, $roles, $enabled, $userNonExpired, $credentialsNonExpired, $userNonLocked) { $originalUser = new User($username, $password, $roles, $enabled, $userNonExpired, $credentialsNonExpired, $userNonLocked); $user = new UserWrapped($originalUser, $this->apiUser); $this->assertSame($username, (string) $user); $this->assertSame($username, $user->getUsername()); $this->assertSame($password, $user->getPassword()); $this->assertSame($roles, $user->getRoles()); $this->assertSame($enabled, $user->isEnabled()); $this->assertSame($userNonExpired, $user->isAccountNonExpired()); $this->assertSame($credentialsNonExpired, $user->isCredentialsNonExpired()); $this->assertSame($userNonLocked, $user->isAccountNonLocked()); $this->assertSame($originalUser->getSalt(), $user->getSalt()); }
/** * @covers Symfony\Component\Security\Core\User\User::getSalt */ public function testGetSalt() { $user = new User('fabien', 'superpass'); $this->assertEquals('', $user->getSalt()); }
/** * Función para registrarse como usuario * @param Application $app * @param Request $request * * @return mixed */ public function signup(Application $app, Request $request) { if ("POST" == $request->getMethod()) { // Se adquiere el encoder $encoder = $app['security.encoder.digest']; $data = $request->get('Usuario'); $usuarioModelo = new UsuarioModelo($app['db']); if ($usuarioModelo->existe(null, $data['correo'])) { return new JsonResponse(array('mensaje' => 'Correo electrónico ya existe.', 'campo' => 'alias'), 400); } else { if ($usuarioModelo->existe($data['alias'])) { return new JsonResponse(array('mensaje' => 'Alias no disponible.', 'campo' => 'alias'), 400); } else { $user = new User($data['correo'], ''); // codificar la clave $clave = $encoder->encodePassword($data['clave'], $user->getSalt()); $filasAfectadas = $usuarioModelo->guardarUsuario("{$data['nombre']} {$data['apellido']}", $data['correo'], $data['alias'], $clave); if ($filasAfectadas == 1) { # Asunto para administrador y usuario $asunto = "Registro de usuario - El Precursor"; # Administrador $mensajeAdmin = '<div style="margin:auto;position: relative;background: #FFF;border-top: 2px solid #00C0EF;margin-bottom: 20px;border-radius: 3px;width: 90%;box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);padding: 20px 30px">'; $mensajeAdmin .= "<p>Se ha registrado un usuario nuevo en El Precursor.</p>"; $mensajeAdmin .= "<p>Detalles del usuario:</p>"; $mensajeAdmin .= "<div style=\"background-color: #F0F7FD;margin: 0px 0px 20px;padding: 15px 30px 15px 15px;border-left: 5px solid #D0E3F0;\"><b>Nombre:</b> {$data['nombre']} {$data['apellido']} <a href=\"mailto:{$data['correo']}\">{$data['correo']}</a> </div>"; $mensajeAdmin .= '</div>'; # Para el usuario registrado $mensajeUsuario = '<div style="margin:auto;position: relative;background: #FFF;border-top: 2px solid #00C0EF;margin-bottom: 20px;border-radius: 3px;width: 90%;box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);padding: 20px 30px">'; $mensajeUsuario .= "<p>Usted se ha registrado exitosamente en El Precursor.</p>"; $mensajeUsuario .= "<div style=\"background-color: #F0F7FD;margin: 0px 0px 20px;padding: 15px 30px 15px 15px;border-left: 5px solid #D0E3F0;\">"; $mensajeUsuario .= "<p>Confirme su registro haciendo click en el siguiente link <a href=\"#\">Link</a>.</p>"; $mensajeUsuario .= "</div>"; $mensajeUsuario .= '</div>'; $sendMail = new SendMail(array('host' => 'mx1.hostinger.es', 'port' => 2525, 'security' => null, 'username' => '*****@*****.**', 'password' => 'elprecursor'), $app['swiftmailer.transport']); $resultAdmin = $sendMail->setMessage($asunto, '*****@*****.**', array('*****@*****.**' => 'El Precursor'), $mensajeAdmin)->send(); $resultUsuario = $sendMail->setMessage($asunto, '*****@*****.**', array($data['correo'] => $data['nombre']), $mensajeUsuario)->send(); # Transporte SMTP/Gmail con ssl /*$transport = \Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername("*****@*****.**") ->setPassword("elprecursor");*/ if ($resultAdmin && $resultUsuario) { return new JsonResponse('El registro fue exitoso. Se ha enviado un mensaje nuevo a su cuenta de correo para confirmar la cuenta.'); } else { $usuarioModelo->eliminar($usuarioModelo->id, true); return new JsonResponse('Ocurrió un error al tratar de enviar el mensaje a su cuenta de correo para confirmar la cuenta. <button type="button" class="btn btn-primary" onclick="$(\'form.form-signup\').submit();">Enviar datos nuevamente</button>', 202); } } else { return new JsonResponse('Ocurrió un problema en el servidor y no se pudo registrar el usuario. Intente más tarde.', 500); } } } } else { return new JsonResponse('Methodo no permitido.', 400); } }