Пример #1
1
 /**
  * Updates a user entry in the database
  *
  * @param User $user
  * @return \Doctrine\DBAL\Driver\Statement|int
  */
 protected function updateUser(User $user)
 {
     return $this->query()->update('User')->where('username = ?')->setParameter(0, strtolower($user->getUsername()))->set('password', '?')->setParameter(1, $user->getPassword())->set('roles', '?')->setParameter(2, join(',', $user->getRoles()))->set('enabled', '?')->setParameter(3, $user->isEnabled())->set('expired', '?')->setParameter(4, !$user->isAccountNonExpired())->set('credentialsExpired', '?')->setParameter(5, !$user->isCredentialsNonExpired())->set('locked', '?')->setParameter(6, !$user->isAccountNonLocked())->execute();
 }
 /**
  * {@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;
 }
Пример #3
0
 public function getProjectsForUser(User $user)
 {
     $sql = 'SELECT project_id as id, project_name as name FROM projects WHERE EXISTS (SELECT * FROM project_user JOIN users ON users.username = :un WHERE project_user.project_id = projects.project_id)';
     try {
         $query = $this->db->prepare($sql);
         $query->execute(['un' => $user->getUsername()]);
         $projects = $query->fetchAll(\PDO::FETCH_ASSOC);
     } catch (\PDOException $e) {
         // TODO: Fail safe
         throw $e;
     }
     return $projects;
 }
 /**
  * @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());
 }
 /**
  * {@inheritdoc}
  */
 public function loadUserByUsername($username)
 {
     if (isset($this->users[$username])) {
         $user = $this->users[$username];
     } else {
         $user = new User($username, '', array('ROLE_CONNECT_USER'), true, true, true, true);
     }
     return new User($user->getUsername(), $user->getPassword(), $user->getRoles(), $user->isEnabled(), $user->isAccountNonExpired(), $user->isCredentialsNonExpired(), $user->isAccountNonLocked());
 }
Пример #6
0
 /**
  * @covers Symfony\Component\Security\Core\User\User::eraseCredentials
  */
 public function testEraseCredentials()
 {
     $user = new User('fabien', 'superpass');
     $user->eraseCredentials();
     $this->assertEquals('superpass', $user->getPassword());
 }
Пример #7
0
 /**
  * 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);
     }
 }
Пример #8
0
 public function testUsersAreNotEqual()
 {
     $user1 = new User('fabien', 'superpass', array('ROLE_USER'));
     $user2 = new User('fabien', 'superpass', array('ROLE_USER'), false);
     $this->assertFalse($user1->equals($user2));
     $this->assertFalse($user2->equals($user1));
 }