Usuario:ManuelRomero/Laravel/autentificacion/ejemplo


 * A continuación vamos a realizar un sistema de logín donde vemos todos los conceptos
 * Crearemos el proyecto indicando todos los pasos

Creando el proyecto
laravel new tiendaLaravel
 * Creamos un proyecto nuevo

Configuración config/database.php

 * Configuramos la base de datos para crear en ella la tabla de usuarios
 * Realizamos la siguiente configuración en el fichero config/database.php
 * Simplemente copiamos el de mysql y le cambiamos el nombre al conector
 * Ahora en el fichero de entorno .env aportamos los datos a las variables

Crear las tablas desde laravel con migraciones

 * Primero creamos la base de datos en nuestro gestor


 * Ahora si creamos la tabla migrations. Esta tabla es una especie de control de versiones que usa laravel para anotar todas las acciones que hace en la base de datos.
 * Para ello usando artisan
 * Al hacer esto podemos observar que nos ha creado una tabla en la base de datos que acabábamos de crear, que tiene 3 campos.

Esta acción nos habrá creado un fichero databases/2017_04_01_220258_crear_usuarios.php Este fichero tiene dos métodos up y down. up creará la tabla en la base de datos y down la eliminará.
 * Ahora vamos a crear la tabla usuarios desde laravel
 * Esto se conocerá como ejecutar una migración, la que nos cree la tabla usuarios
 * Ahora tendremos que escribir los nombres de los campos en la tabla, para ello usaremos el Shema que es un facade que nos facilita el uso de las acciones sobre la base de datos


 * Para ejecutar todos los ficheros o migraciones pendintes ejecutamos
 * Vemos cómo ha creado la tabla y los campos

localhost:80001/auth/login php artisan make:migration tablaUsuarios php artisan migrate Podemos verlas en  ./proyectoLaravel/database/migrations 2014_10_12_000000_create_users_table.php 2014_10_12_100000_create_password_resets_table.php 2015_05_28_090127_tablaUsuarios.php
 * Idea del Middleware, como un software que se pone en medio entre el cliente y la respuesta
 * En la versión anterior se llamaban filtros
 * Laravel 5, ya incorpora un filtro para la autentificación. Tiene su propia plantilla y su propia tabla
 * Se puede ver accediendo directamente a la página
 * Ahora hay que mirar los ficheros responsables de esta acción
 * Los filtros o mi
 * En esta versión, también tenemos
 * Creamos las tablas con migration
 * Ahora vemos que ha creado las tablas en la base de datos
 * Estas tablas con estos campos las ha creado debido a la migración que ya viene por defecto en laravel 5
 * Por su puesto que podemos añadir o quitar (?) campos de estas tablas
 * Si lo hacemos debermos de actulizar la clase app/Services/Register-php
 * Para modificar en la creación de la tabla deberíamos de modificar el contenido de la clase de la migración 2014_10_12_000000_create_users_table.php antes de ejecutarse, o si no crear una nueva migración con un alter table de la tabla en cuestión para añadir el nuevo campo.

manolo@pitufin:~/instituto/dwesDistancia/empresas/database/migrations$

php artisan migrate php artisan migrate:rollback php artisan migrate:rollback php artisan migrate:refresh resetMigration.png
 * Editamos el fichero que ha creado la migración y añadimos los campos que necesitamos en el método up
 * Ejecutamos la migracion
 * Y observamos como nos ha creado la tabla con los campos deseados.
 * Si queremos deshacer lo hecho, es decir ejecutar los métodos down de la última migración creada
 * Si quisiéramos deshacer todas las migraciones reset
 * Si queremos deshacer todas las migraciones y que se vuelvan a ejecutar, por ejemplo por que hemos modificado la estructura de la tabla y por comodidad eliminamos todo y lo volvemos a crear: refrehs
 * Ahora poblamos la tabla de usuarios y tocaremos un modelo para hacerlo

Poblando la tabla con seed

 * Laravel también nos permite poblar las tablas
 * Para ello crearemos ficheros en la carpeta seed
 * Es habitual que cada tabla tenga un seeder o fichero de poblar, pero puede haber varios ficheros seeder para una tabla, no hay restricción en ese aspecto
 * Primero cargamos este seeder desde el fichero DataBaseSeeder que ya teníamos en nuestro sistema


 * Ahora escribimos la carga de datos como contenido del método run
 * Para ello escribiremos el siguiente código

y volvemos a cargar composer
 * Como vemos usamos el componente Carbon. si no funcionara lo especificamos en composer incluyéndolo en los paquetes requeridos
 * Para ejecutar la carga podemos hacerlo recargando todas las migraciones con la opción --seed, o ejecutando solo la carga de datos
 * O bien

Y tras hacerlo vemos los datos cargados

Creando el modelo
/app/Models/User.php lo cambiamos a /app/Models/Usuario.php
 * Si vamos a la carpeta de models, vemos que existe un modelo creado llamado users. Este modelo se ha creado por que está asociado a la clase Auth que a continuación comentaremos. Para personalizar un poco todo y entender mejor el proceso vamos a modificar este modelo y llamarle Usuario y a la tabla asociada al modelo usuarios
 * Esto lo hacemos cambiando en el nombre del fichero
 * Dentro del fichero donde ponía
 * Ponemos


 * Ahora que ya tenemos el modelo Usuario con su tabla, que previamente hemos creado vamos a poblarla

Poblando la tabla
php artisan db:seed
 * Para ello como ya sabemos en la carpeta seed, cremos una nuevo clase que extienda de Seeder; por ejemplo la llamamos PoblarUsuariosSeeders, y usando el modelo dentro del método run, creamos un nuevo registros
 * OBservamos que usamos la clase Hash para cifrar el contenido de la password
 * Para llamar a este método modificamos el método run de la clase DataBaseSeeder.php
 * Ahora ejecutando desde la consola con artisan tendremos el nuevo registro creado
 * Verificamos que tenemos el registro creado

Auth.php
Como hemos modificao el modelo, vamos a indicar a la clase de autentificación cual es el modelo que usaremos para autentificar usuarios que sera Usuario
 * De momento no tocamos la gestion de como recordar la password

Preparando las rutas
/public/css/tienda.css php artisan controller:make Autentificacion php artisan controller:make Accion public function formularioLogin{ //Si el usuario ya está autentificado directamente vamos a enviarle a la página inicial, y si no mostramos el menu if (Auth::check){ return Redirect::to('/'); }       return View::make('formularioLogin'); }         Wellcome a tu sitio web Salir. </html
 * Para este ejemplo vamos a tener la siguiente sitiación
 * Un usuario solo puede acceder al sitio web si previamente se ha identificado
 * Para identificarse usaremos el login que tenemos de la tienda
 * Una vez logueado le daremos la opción de desloguearse
 * No lo hemos visto anteriormente pero es muy intuitivo, y es el tema de los filtros
 * En este caso le estamos diciendo que existen ciertas rutas que solo cargará si el usuario previamente se ha identificado
 * Con solo hacer esto no tenemos que validar el usuario ante ninguna acción.
 * El código es tan sencillo como
 * Usaremos el formulario usado para la tienda
 * Para ello usaremos tienda.css. Este fichero lo debemos copiar en la carpeta
 * Creando los controladores
 * Incluimos los métodos especificados en el router.php dentro de los controladores
 * muestraLogion
 * En este método queremos mostrar el formulario de login si el usuario no está autentificado, si no simplemente mostramos el formulario para que se loguee.
 * Ahora haremos el vista formularioLogin.blade.php
 * Vemos como en este caso vamos a consultar a ver si hay un mensaje de error
 * Si simplemente accediera al valor de la variable, a diferencia de smarty, aquí sí que me daría un error.
 * Como usa css, copiamos el fichero tienda.css, en la carpeta /public/css/tienda.css
 * validaLogin
 * Este método contiene la validación de nuestro usuario
 * Lo que queremos es que si se valida correctamente entremos a una página del sitio, y si no que, vuelva a mostrar la pantalla de validarse, y que me muestre un mensaje de error
 * Vemos directamente el código
 * Ahora nos queda escribir la plantilla del sitio hello.php en la carpeta de views
 * Editamos el fichero ya existente y modificamos el body
 * logout
 * Para terminar nos falta implementar el método logout