Esempio n. 1
0
 /**
  *
  * Método para logear al usuario.
  *
  */
 public function login($authMethod)
 {
     if ($authMethod == "LOCAL") {
         //Obtengo el número de intentos de sesión de la ip.
         $attcount = $this->getattempt($_SERVER['REMOTE_ADDR']);
         if ($attcount >= self::MAX_ATTEMPTS) {
             throw new ExceedSessionAttempts("Has sobrepasado el número de intentos de sessión permitidos - espere 30 minutos");
         } else {
             //Validamos datos.
             //Saneamos y Filtramos los datos.
             $nick = filter_input(INPUT_POST, 'nick', FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE);
             $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE);
             if ($nick && $password) {
                 //Comprobamos si existe ese usuario con esa contraseña.
                 $sql = $this->pdo->prepare('SELECT * FROM USUARIOS WHERE nick = :nick AND authMethod = "LOCAL"');
                 $sql->execute(array('nick' => $nick));
                 $usuario = $sql->fetch(PDO::FETCH_ASSOC);
                 if (!check_password($password, $usuario["password"])) {
                     //Fallo al intentar iniciar sesión.
                     //Añadimos intento de sesión.
                     $this->addattempt($_SERVER['REMOTE_ADDR']);
                     //Registramos acción.
                     logger_action("intento sesión fallido", $_SERVER["REMOTE_ADDR"]);
                     throw new LoginFailed("Usuario o contraseña no válidos");
                 } else {
                     //usuario logeado correctamente.
                     logger_action("sesión iniciada", $_SERVER["REMOTE_ADDR"]);
                     //Generamos token de sesión
                     return $this->generateSessionToken($usuario["id"]);
                 }
             } else {
                 throw new InvalidData("Nick y password no pueden estar vacíos");
             }
         }
     } else {
         //Saneamos y validamos email.
         $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL, FILTER_VALIDATE_EMAIL);
         $stmt = $this->pdo->prepare('SELECT * FROM USUARIOS WHERE email = :email AND authMethod = :authMethod');
         $stmt->execute(array('email' => $email, 'authMethod' => $authMethod));
         $usuario = $stmt->fetch(PDO::FETCH_ASSOC);
         if ($stmt->rowCount() == 0) {
             throw new LoginFailed("Usuario o contraseña no válidos");
         } else {
             //usuario logeado correctamente.
             logger_action("sesión iniciada", $_SERVER["REMOTE_ADDR"]);
             //Generamos token de sesión
             return $this->generateSessionToken($usuario["id"]);
         }
     }
 }
Esempio n. 2
0
                $stmt->bindParam(':nick', $nick, PDO::PARAM_STR);
                $stmt->bindParam(':password', $hash, PDO::PARAM_STR);
                $stmt->bindParam(':firstName', $firstName, PDO::PARAM_STR);
                $stmt->bindParam(':lastName', $lastName, PDO::PARAM_STR);
                $stmt->bindParam(':email', $email, PDO::PARAM_STR);
                $stmt->bindParam(':fechaNac', $fechaNac, PDO::PARAM_STR);
                $stmt->bindParam(':sexo', $sexo, PDO::PARAM_STR);
                $stmt->bindParam(':ubicacion', $ubicacion, PDO::PARAM_STR);
                $stmt->bindParam(':telefono', $telefono, PDO::PARAM_INT);
                $stmt->bindParam(':authMethod', $authMethod, PDO::PARAM_STR);
                //Ejecutamos la sentencia.
                $exito = $stmt->execute();
                //La operación tuvo éxito.
                if ($exito) {
                    //Enviamos email al usuario.
                    echo json_encode(array("error" => false, "type" => "REGISTRATION_SUCCESFULL", "data" => "Te has dado de alta correctamente, en breve recibirás un correo con tus datos de acceso"));
                    if ($authMethod == "LOCAL") {
                        logger_action("CONTRASEÑA GENERADA", $password);
                    }
                    send_mail($email, "Bienvenido a TeVeo!", $message);
                }
            } catch (PDOException $e) {
                logger_action("ERROR_REGISTRO", $e->getMessage());
                echo json_encode(array("error" => true, "type" => "DATABASE", "data" => "Ocurrió un error inténtelo más tarde"));
            }
        } else {
            echo json_encode(array("error" => true, "type" => "INVALID_DATA", "data" => $errores));
        }
    }
}
sleep(5);