lunes, 12 de junio de 2023

Laravel faker

 Cuando te sumerges en el mundo de la programación, por ejemplo el desarrollo de páginas web con el lenguaje de programación php, y/o el framework Laravel, es de mucha ayuda el generar datos ficticios para realizar las pruebas correspondientes y visualizar el avance del proyecto.

En el caso del framework Laravel, se cuenta con una importante herramienta llamada seeder, ésta nos permite crear datos falsos o genéricos para realizar pruebas, cómo por ejemplo para desarrollar un crud (create, read, update, delete).

En el directorio del proyecto creado con el framework Laravel, existe la carpeta Database, dentro de esta tenemos la sub-carpeta seeders

Aquí es en donde podemos crear datos falsos. Se pueden crear datos para user_id, name, price, quantity, phone, email y status entre muchos otros.


Aquí se muestra un ejemplo de la estructura que contempla la función definition del seeder de Laravel

En el caso de registros para name, se pueden utilizar datos del tipo word o name, para el campo price podemos utilizar números aleatorios, y si queremos definir un rango de números, hacemos uso del tipo de dato numberBetween, para el caso de números telefónicos se utiliza phoneNumber, en correos electrónicos usamos safeEmail precedido por el método unique, para que no permita correos duplicados, y también podemos generar valores booleanos, por ejemplo para el dato status, aquí uilizamos boolean, todos precedidos por el método faker.

domingo, 17 de abril de 2022

reCaptcha v2 en tu proyecto de Laravel, Implementación aplicando la validación en la pantalla de login o en la pantalla de registro

Como implementar la reCaptcha V2 de google en Laravel

La recaptcha versión 2 de google (No soy un robot) la he implementado en un proyecto de laravel versión 9, lo puedes implementar el Laravel 8, o Laravel 7, para este ejemplo hacemos uso del sistema de autenticación Laravel Breeze, este sistema de autenticación es de fácil implementación y no nos llevará más de 10 minutos en instalarlo.

Nota: Yo estoy trabajando con el sistema operativo Linux Manjaro KDE, si tienes otro sistema operativo como Linux ubuntu, Windows o MAC, no hay inconvenientes.



Cabe señalar que debes contar con las siguientes herramientas, dicho de otra manera, debes contar con las siguientes aplicaciones en tu sistema operativo:

  1. Composer, el gestor de paquetes de Laravel, yo tengo composer versión 2,
  2. Node js, el framework basado en javascript, para poder ejecutar el gestor de paquetes npm,
  3. XAMPP, Servidor de base de datos local, con mysql,
  4. Un editor de texto, en mi caso utilizao Sublime Text, V4 (La versión 3 también te puede ser de utilidad)
  5. Una cuenta de google, para poder obtener la secret key, y el site key de la recaptcha

Si tienes poca experiencia con el framework Laravel, no te preocupes, vamos a ir paso a paso para que al final tu proyecto pueda ser 100% funcional.


Creación del proyecto Laravel

Abrimos una terminal o linea de comandos, 

Existen dos formas o comandos para crear nuestro proyecto laravel, el primero es:

composer create-project laravel/laravel example-app

en donde example-app corresponde al nombre del proyecto, el cual puedes modificar o personalizar.

el segundo comando es más corto, lo puedes aplicar si ya cuentas con el instalador de laravel.

laravel new example-app

de igual forma, example-app hace referencia al nombre del proyecto, en mi caso ejecuto y asigno el nombre de recaptchav2

Laravel new recaptchav2

Cuando ha finalizado la creación del proyecto, tenemos que acceder al directorio recaptchav2 con el comando:  

cd recaptchav2

Instalación del sistema de autenticación Laravel Breeze

Ahora ejecutamos el comando que nos permitirá implementar el sistema de autenticación Laravel Breeze en nuestro proyecto Laravel:

composer require laravel/breeze --dev

Ejecutamos un segundo comando para completar la instalación:

php artisan breeze:install

Debido a que Laravel Breeze utiliza el framework de diseño Tailwind css, necesitamos ejecutar el siguiente comando:

npm install && npm run dev

Configuración de Base de datos / Conectar base de datos

Abrimos el proyecto recién creado en el editor de texto de nuestra preferencia, en mi caso utilizo Sublime Text, abrimos el archivo .env que se encuentra en la parte raiz de los directorios del proyecto.


Una vez abierto el archivo . env, debemos validar 6 datos importantes que son necesario para conectar nuestro proyecto Laravel con la base de datos, los cuales son:

  • DB_CONNECTION=mysql
  • DB_HOST=127.0.0.1
  • DB_PORT=3306
  • DB_DATABASE=recaptchav2
  • DB_USERNAME=root
  • DB_PASSWORD=

En DB_CONNECTION debe contener mysql, ya que ese es el motor de base de datos con el que estamos trabajando.

En DB_HOST debe contener la url de localhost, 127.0.0.1, ya que el proyecto lo estamos desarrollando de modo local.

En el campo DB_PORT por lo regular utilizamo el puerto 3306, si por alguna razón el puerto en tu computadora es diferente, como por ejemplo 33060, solo actualizalo.

En el campo DB_DATABASE colocamos el nombre de la base de datos, por default te aparece el nombre laravel, en mi caso como utilicé el comando Laravel new, me toma el nombre del proyecto como nombre de la base de datos.

El campo DB_USERNAME por default utilizamos root, si en tu servidor de base de datos has configurado otro usuario con los mismos permisos que root, lo puedes modificar.

El campo DB_PASSWORD lo dejo en blanco, ya que no he aplicado una contraseña en mi servidor de base de datos mysql o phpmyadmin, si tu ya has asignado una contraseña aquí la debes colocar.

Creación de base de datos

Debemos activar el servidor xampp, con mysql y apache, para poder ejecutar en el navegador phpmyadmin. y aquí crear la base de datos que llevará el mismo nombre que asignamos en el archivo .env de nuestro proyecto Laravel, para nuestro caso creamos la base de datos recaptchav2


Ejecutar migraciones de Laravel

Volvemos a la terminal, y ejecutamos el comando que creará las tablas del sistema de autenticación en la base de datos que recién hemos creado en phpmyadmin.

php artisan migrate

Si actualizamos phpmyadmin, podremos validar que la base de datos ya cuenta con las tablas correspondientes:


Validar creación del proyecto Laravel con sistema de autenticación Laravel Breeze

En la terminal ejecutamos el comando php artisan migrate que nos permite activar el servidor php, para luego en una ventana nueva del navegador, mediante la url 127.0.0.1:8000 (localhost) podamos validar la creación de nuestro proyecto laravel, el cual cuenta ya con el sistema de autenticación Laravel Breeze.

php artisan serve


Si hacemos click en el botón login, o en el botón de registro, podremos ver que las págians de login y de registro aún no cuentan con la recaptcha.



Instalación de recaptcha v2 en nuestro proyecto laravel mediante repositorio github

En la terminal ejecutamos el comando:

composer require anhskhobo/no-captcha

Este comando instalará los archivos correspondientes para poder ejecutar la recaptcha.
Necesitamos publicar el archivo de configuración de esta librería no-captcha, ejecutamos en la terminal:

php artisan vendor:publish --provider="Anhskhobo\NoCaptcha\NoCaptchaServiceProvider"

Secret key y Site key reCaptcha de google

Ahora debemos agregar los campos secret key y sitekey a nuestro proyecto laravel, de igual forma, se integran en el archivo .env, al final del archivo:

NOCAPTCHA_SECRET=secret-key
NOCAPTCHA_SITEKEY=site-key

En una nueva pestaña del navegador escribimos la url:  google.com/recaptcha/admin/create

En el campo Etiqueta colocamos un nombre, yo le asigné captchav2,
pasamos al campo Tipo de reCaptcha, seleccionamos el radio button reCaptcha v2

Se despliegan 3 radio buttons más, seleccionamos el radio button "Casilla de verificación No soy un robot"

Pasamos a la sección de Dominio, escribimos la palabra: localhost y presionamos el botón +, para agregar el dominio,

Ahora debemos aceptar las condiciones del servicio de reCaptcha, marcamos el checkbox, y hacemos click en el botón ENVIAR,

Cuando presionamos el botón enviar, la página web nos manda a otra página que ya ha generado las claves correspondientes, como son la site_key y la secret_key,
estos valores los vamos a copiar y a pegar en el archivo .env como corresponda.

En la terminal debemos ejecutar el comando:

php artisan config:clear

para limpiar la configuración del caché.

Plantilla login

En el editor de texto, abrimos el archivo: resources/views/auth/login.blade.php

Nos ubicamos entre el div del Remember me y el botón Log in,

Aquí vamos a generar un nuevo div y agregaremos dos método javascript, render y display, queda de la siguiente forma:
            <div class="form-group mt-3">
                {!! NoCaptcha::renderJs() !!}
                {!! NoCaptcha::display() !!}
            </div>

Ahora ejecutamos en la terminal el comando:
npm run watch

Actualizamos el navegador y hacemos click en el botón Log in,
aquí ya podremos ver la recaptcha dentro del formulario

Ya hemos avanzado bastante en este proyecto, sin embargo nos faltan los últimos pasos, debemos generar un nuevo usuario desde la plantilla de registro, ahora hacemos log out, y nos dirigimos a la plantilla de Log in, colocamos la cuenta de correo, y contraseña creada recientemente, y al hacer clicl en el botón LOG IN, vemos que sin marcar la recaptcha, podemos entrar a la página del dashboard, por lo que debemos implementar ahora la validación de la recaptcha, para que nos indique que debemos marcar la recaptcha, o de lo contrario no puede continuar el usuario.
Antes de pasar a las validaciones, veamos un demostración para mostrar la recaptcha en diferentes idiomas.

Recaptcha en diferentes idiomas
Al método render le vamos a agregar el siguiente código, que nos permitirá mostrar el texto No soy un robot en el idioma frances, 
        <div class="form-group mt-3">
                {!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
                {!! NoCaptcha::display() !!}
            </div> 

Al actualizar los datos y recargar el navegador, el widget de la recaptcha se ocultará ya que en el método render se cuenta con el código en true, debemos agregar un script al final de la plantilla log in, quedano de la siguiente manera:

</x-guest-layout>    (esto indica el final de la plantilla log in, debajo se agrega el script)

<script>
    var onloadCallback = function() {
    alert("grecaptcha is ready");
    };
</script>

La variable onloadCallback la copiamos y la pegamos en el método render, quedando de la siguiente manera:
            <div class="form-group mt-3">
                {!! NoCaptcha::renderJs('en', true, 'onloadCallback') !!}
                {!! NoCaptcha::display(['data-theme' => 'dark']) !!}
            </div>

Guardamos, y actualizamos el navegador, ahora el navegador nos mostrará un mensaje de alerta que indica que la recaptcha ya está lista.


Para poder visualizar el widget de la recaptcha nuevamente en el formulario del log in, debemos cambiar la condición true por false, quedando así:
 
            <div class="form-group mt-3">
                {!! NoCaptcha::renderJs('fr', false, 'onloadCallback') !!}
                {!! NoCaptcha::display() !!}
            </div>

Al actualizar el navegador, veremos que se muestra nuevamente el widget de la recaptcha y la descripción No soy un robot se encuentra en el idioma ingles, si deseas mostrar el texto en idioma ingles cambias las letras fr que están en el método render por en, y para el idioma español agregamos es,

            <div class="form-group mt-3">
                {!! NoCaptcha::renderJs('es', false, 'onloadCallback') !!}
                {!! NoCaptcha::display(['data-theme' => 'dark']) !!}
            </div>

Validación de recaptcha en archivo request

En el editor de texto, abrimos el archivo que se encuentra en la ruta: App\Http\Requests\Auth\LoginRequest.php

Nos desplazamos hasta la función rules(), y agregamos el código que nos solicitará marcar la recaptcha en el log in, quedando de la siguiente manera la función:

public function rules()
    {
        return [
            'email' => ['required', 'string', 'email'],
            'password' => ['required', 'string'],
            'g-recaptcha-response' => 'required|captcha',
        ];
    }

Al actualizar el navegador, introducimos los datos de cuenta de correo, y contraseña, si presionamos el botón Log in, sin marcar la recaptcha veremos que ya no podemos ingresar al dashboard hasta que marquemos las recaptcha, ahora bien, colocamos la cuenta de correo, la contraseña y marcamos la recaptcha, hacemos clicl en el botón log in, el sistema de autenticación ya nos permite ingresar al dashboard de nuestro proyecto laravel.

Con esto hemos terminado el tutorial, si este post fue de tu ayuda, hazlo saber en los comentarios,
Aquí te dejo el video en el que podrás seguir también de manera clara el paso a paso de este procedimiento, además de que incluye la recaptcha en la vista de registro.

https://www.youtube.com/watch?v=zWHxMZw5bz4&t=1178s

Saludos.

miércoles, 16 de marzo de 2022

Método "startingValue" en Laravel 8

Apartir de la versión número 8 de Laravel, el equipo de desarrollo ha creado un nuevo método para inicializar el auto_increment desde un número diferente a uno, es decir, si deseas que el ID de tus atributos o registros en la base de datos no inicien desde 1, sino que inicien desde el número 1000 o 10000 por ejemplo, ahora con este nuevo método se facilita el cambio del valor inicial del auto_inctement en Laravel a partir de la versión 8.

Esto se hizo oficial desde el día 6 de septiembre de 2020 por @taylorotwell en su cuenta de @twitter.

En el archivo de migración, cuando se declaran los atributos que contendrá la tabla que va a ser creada, en el campo ID se agrega el método startingValue, por ejemplo:

Schema::creaste('posts', function (Blueprint $table ) {
     $table->id()->startingValue (10000);
)

Con la adición del método startingValue, nos permite establecer el primer número  en el que comenzará el incremento automático de una manera fluida en Laravel.

En muchas se las aplicaciones, probablemente no se necesite esto, pero en algunas situaciones en las que no deseamos que el registro inicie desde uno, este método es de gran ayuda.

Saludos

martes, 25 de enero de 2022

Como instalar Node.Js en el sistema operativo Linux Ubuntu, Lubuntu, Qubuntu, Xubuntu, Ubuntu Mate, etc.

 Si estás programando en JavaScript, React JS, Vue.js, TypeScript, Node js o en cualquier otra derivada de JavaScript, y necesitas hacer uso de las instrucciones NPM, que es el gestor de paquetes de JavaScript, entonces es necesario que instales Node.JS.

En este blog te mostraré como instalar Node.JS la versión 16.13 LTS en el sistema operativo Linux Ubuntu, para la publicación de este blog, la versión 16.13 LTS es la última publicada en la página de este framework. Cabe señalar que la instalación se realizará desde la terminal, de una manera clara y sencilla.

Bien, como primer paso abrimos una terminal de Ubuntu, en esta ejecutamos el comando "node --version" para validar que no tenemos instalado este software, y presionamos enter.


En mi caso me dice el sistema operativo que no se ha encontrado la orden node, pero que podemos instalar con el comando "sudo apt install node.js", si ejecutamos este comando seguramente vamos a instalar node.js en Ubuntu, pero no te aseguro que se instale la última versión, se estaría instalando una versión anterior a la 16.13, como por ejemplo la versión 10 o 12.

Entonces ahora ejecutamos una búsqueda en el navegador de nuestra preferencia, en mi caso utilizo Google Chrome y escribimos node js, una vez que finaliza la búsqueda, hacemos click en el enlace "nodejs.org", este link nos llevará a la página principal de Node.js


Ahora que ya nos encontramos en la página principal de Node.js, vemos que la versión actual es la versión 16.13 LTS (Long Time Support), y esa es la que vamos a instalar, entonces hacemos click en el menú Descargas.


Ahora nos desplazamos hacia abajo hasta encontrar la opción: Instalar Node.js mediante un gestor de paquetes, hacemos click en ese enlace:

Nos manda a otra página de node.js, de igual forma nos desplazamos hacia abajo, hasta encontrar el titulo: "Distribuciones Linux basadas en Debian y Ubuntu", hacemos click en el siguiente enlace con descripción "Las distribuciones de binarios oficiales de Node.js" 

Ahora llegamos hasta el repositorio oficial github de Node.js, necesitamos buscar la sección de "Instrucciones de Instalación", debemos recordar que cuando ingresamos a la página oficial de Node.js observamos que la última versión LTS es la 16.13, entonces vamos a trabajar con la versión 16.x que nos muestra el repositorio github, y ahora copiamos la linea de código curl, la seleccionamos, copiamos,

Procedemos a pegar el código en la terminal, y presionamos enter,


Si el sistema te solicita ingresar la contraseña de super usuario o root, la ingresas, cuando finalice la ejecución de este comando, regresamos a la página del repositorio github, seleccionamos y copiamos el segundo comando: "sudo apt-get install -y nodejs"


Lo pegamos en la terminal y presionamos enter, con este comando estaremos finalizando la instalación de node.js en el sistema operativo Ubuntu 20.04 LTS.

Una forma de validar que ya se ha instalado node.js en nuestro sistema operativo Linux Ubuntu es ejecutando en la terminal el comando "node --version", con esto podrás validar que se ha instalado la versión 16.13, si ejecutas el comando "npm" podrás visualizar la lista de comandos disponibles para el gestor de paquetes de node.js, ejecutando el comando "npm --version" podremos validar la versión del gestor de paquetes npm que en este caso es la 8.1

Bueno, espero que este blog haya sido de tu ayuda, si lograste instalar node.js en tu ordenador siguiendo estas instrucciones, hazlo saber en la sección de comentarios.


Saludos.

Imágenes para tu página web, tu presentación profesional y más...

Día nublado Hermoso arbol Mundo arácnido  Hermosa naturaleza  Para e...