Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/ejemplo»
(→Creando el proyecto) |
|||
(6 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 4: | Línea 4: | ||
===Creando el proyecto=== | ===Creando el proyecto=== | ||
*Creamos un proyecto nuevo | *Creamos un proyecto nuevo | ||
− | + | laravel new tiendaLaravel | |
+ | ====Configuración config/database.php==== | ||
*Configuramos la base de datos para crear en ella la tabla de usuarios | *Configuramos la base de datos para crear en ella la tabla de usuarios | ||
− | *Realizamos la siguiente configuración | + | *Realizamos la siguiente configuración en el fichero '''''config/database.php''''' |
+ | *Simplemente copiamos el de mysql y le cambiamos el nombre al '''conector''' | ||
<source lang=php> | <source lang=php> | ||
− | ' | + | 'dwes' => [ |
− | + | 'driver' => 'mysql', | |
− | + | 'host' => env('DB_HOST', '127.0.0.1'), | |
− | + | 'port' => env('DB_PORT', '3306'), | |
− | + | 'database' => env('DB_DATABASE', 'forge'), | |
− | + | 'username' => env('DB_USERNAME', 'forge'), | |
− | + | 'password' => env('DB_PASSWORD', ''), | |
− | + | 'unix_socket' => env('DB_SOCKET', ''), | |
− | + | 'charset' => 'utf8mb4', | |
− | + | 'collation' => 'utf8mb4_unicode_ci', | |
+ | 'prefix' => '', | ||
+ | 'strict' => true, | ||
+ | 'engine' => null, | ||
+ | ], | ||
</source> | </source> | ||
+ | *Ahora en el fichero de entorno '''''.env''''' aportamos los datos a las variables | ||
+ | <source lang=bash> | ||
+ | |||
+ | DB_CONNECTION=dwes | ||
+ | DB_HOST=127.0.0.1 | ||
+ | DB_PORT=3306 | ||
+ | DB_DATABASE=dwesLaravel | ||
+ | DB_USERNAME=root | ||
+ | DB_PASSWORD=root | ||
+ | </source> | ||
+ | ====Crear las tablas desde laravel con migraciones==== | ||
+ | *Primero creamos la base de datos en nuestro gestor | ||
+ | [[Archivo:crearBaseDatos.png]]<br /> | ||
+ | *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 | ||
+ | <source lang=bash> | ||
+ | php artisan migrate:install | ||
+ | </source> | ||
+ | *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. | ||
+ | [[Archivo:tablaMigration.png]] | ||
+ | |||
+ | *Ahora vamos a crear la tabla usuarios desde laravel | ||
+ | *Esto se conocerá como ejecutar una migración, la que nos cree la tabla usuarios | ||
+ | <source lang=bash> | ||
+ | {0:02}~ ➭ php artisan make:migration crear_usuarios --create=usuarios | ||
+ | Created Migration: 2017_04_01_220258_crear_usuarios | ||
+ | {0:02}~/laravel/tiendaLaravel ➭ | ||
+ | </source> | ||
+ | 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 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 | ||
+ | {{Plegable|hide|fichero de migración para la tabla usuarios| | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | |||
+ | use Illuminate\Support\Facades\Schema; | ||
+ | use Illuminate\Database\Schema\Blueprint; | ||
+ | use Illuminate\Database\Migrations\Migration; | ||
+ | |||
+ | class CrearUsuarios extends Migration | ||
+ | { | ||
+ | /** | ||
+ | * Run the migrations. | ||
+ | * | ||
+ | * @return void | ||
+ | */ | ||
+ | public function up() | ||
+ | { | ||
+ | Schema::create('usuarios', function (Blueprint $table) { | ||
+ | $table->increments('id'); | ||
+ | $table->string('name'); | ||
+ | $table->string('email')->unique(); | ||
+ | $table->string('password'); | ||
+ | $table->rememberToken(); | ||
+ | $table->timestamps(); | ||
+ | // | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Reverse the migrations. | ||
+ | * | ||
+ | * @return void | ||
+ | */ | ||
+ | public function down() | ||
+ | { | ||
+ | Schema::dropIfExists('usuarios'); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | }} | ||
+ | *Para ejecutar todos los ficheros o migraciones pendintes ejecutamos | ||
+ | <source lang=bash> | ||
+ | php artisan migrate | ||
+ | </source> | ||
+ | *Vemos cómo ha creado la tabla y los campos | ||
+ | [[Archivo:tablaUsuarios.png]] | ||
+ | |||
+ | |||
*Idea del Middleware, como un software que se pone en medio entre el cliente y la respuesta | *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 | *En la versión anterior se llamaban filtros | ||
Línea 76: | Línea 163: | ||
php artisan migrate | php artisan migrate | ||
*Y observamos como nos ha creado la tabla con los campos deseados. | *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''''' | ||
+ | php artisan migrate:rollback | ||
+ | [[Archivo:rollbackUsuarios.png]] | ||
+ | *Si quisiéramos deshacer todas las migraciones '''''reset''''' | ||
+ | php artisan migrate:rollback | ||
+ | [[Archivo:resetMigration.png]] | ||
+ | *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''''' | ||
+ | php artisan migrate:refresh | ||
+ | [[Archivo:refreshMigration.png]] | ||
+ | |||
+ | resetMigration.png | ||
*Ahora poblamos la tabla de usuarios y tocaremos un modelo para hacerlo | *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 | ||
+ | <source lang=bash> | ||
+ | php artisan make:seeder UsuarioTableSeeder | ||
+ | </source> | ||
+ | [[Archivo:seederUsuarioTableSeeder.png]] | ||
+ | *Primero cargamos este seeder desde el fichero DataBaseSeeder que ya teníamos en nuestro sistema | ||
+ | {{Plegable|hide|DataBaseSeeder.php| | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | use Illuminate\Database\Seeder; | ||
+ | |||
+ | class DatabaseSeeder extends Seeder | ||
+ | { | ||
+ | /** | ||
+ | * Run the database seeds. | ||
+ | * | ||
+ | * @return void | ||
+ | */ | ||
+ | public function run() | ||
+ | { | ||
+ | $this->call(UsuarioTableSeeder::class); | ||
+ | } | ||
+ | } | ||
+ | </source>}} | ||
+ | *Ahora escribimos la carga de datos como contenido del método '''''run()''''' | ||
+ | *Para ello escribiremos el siguiente código | ||
+ | {{Plegable|hide|método seed| | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | public function run() { | ||
+ | DB::table('usuarios')->insert(array( //DB para acceder a la base de datos | ||
+ | 'name' => 'Manuel', | ||
+ | 'email' => 'ManuelRomeroMiguel@gmail.com', | ||
+ | 'password' => Hash::make('manuel'), //Hash:make crea una clave, Siempre generará un hash diferente aunque usemos el mismo texto | ||
+ | 'created_at'=> \Carbon\Carbon::now(), //Carbon es un componente laravel para gestionar fechas | ||
+ | 'updated_at'=> \Carbon\Carbon::now() | ||
+ | )); | ||
+ | } | ||
+ | </source> | ||
+ | }} | ||
+ | *Como vemos usamos el componente Carbon. si no funcionara lo especificamos en composer incluyéndolo en los paquetes requeridos | ||
+ | <source lang=bash> | ||
+ | "require": { | ||
+ | //....... | ||
+ | "nesbot/carbon": "~1.14" | ||
+ | }, | ||
+ | </source> | ||
+ | y volvemos a cargar composer | ||
+ | <source lang=bash> | ||
+ | composer update | ||
+ | </source> | ||
+ | *Para ejecutar la carga podemos hacerlo recargando todas las migraciones con la opción '''''--seed''''', o ejecutando solo la carga de datos | ||
+ | <source lang=bash> | ||
+ | php artisan migrate:refresh --seed | ||
+ | </source> | ||
+ | *O bien | ||
+ | |||
+ | <source lang=bash> | ||
+ | php artisan db:seed | ||
+ | </source> | ||
+ | Y tras hacerlo vemos los datos cargados | ||
+ | [[Archivo:seedUsuarios.png]] | ||
+ | {{Tip|Para cargas masivas ver el componente de faker https://github.com/fzaninotto/Faker}} | ||
===Creando el modelo=== | ===Creando el modelo=== | ||
*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 | *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 |
Última revisión de 23:12 2 abr 2017
- 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
- Creamos un proyecto nuevo
laravel new tiendaLaravel
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
'dwes' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],
- Ahora en el fichero de entorno .env aportamos los datos a las variables
DB_CONNECTION=dwes DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=dwesLaravel DB_USERNAME=root DB_PASSWORD=root
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
php artisan migrate:install
- 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.
- Ahora vamos a crear la tabla usuarios desde laravel
- Esto se conocerá como ejecutar una migración, la que nos cree la tabla usuarios
{0:02}~ ➭ php artisan make:migration crear_usuarios --create=usuarios Created Migration: 2017_04_01_220258_crear_usuarios {0:02}~/laravel/tiendaLaravel ➭
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 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
fichero de migración para la tabla usuarios |
---|
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CrearUsuarios extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('usuarios', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); // }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('usuarios'); } } |
- Para ejecutar todos los ficheros o migraciones pendintes ejecutamos
php artisan migrate
- Vemos cómo ha creado la tabla y los campos
- 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
localhost:80001/auth/login
- 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
php artisan make:migration tablaUsuarios php artisan migrate
- 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
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
- 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$
- Editamos el fichero que ha creado la migración y añadimos los campos que necesitamos en el método up
... public function up(){ Schema::create('usuarios', function($table){ $table->increments('id'); $table->string('password'); $table->string('email'); $table->string('usuario'); $table->timestamps(); $table->rememberToken(); }); } public function down(){ Schema::drop('usuarios'); } *Ahora ejecutamos la migración para que se cree la tabla php artisan migrate *Ahora añadimos el campo para poder recordar el usuario conectado php artisan make:migration tablaUsuarios php artisan migrate:make tablaUsuarios2 *Cargamos lo que queremos que se ejecute en el método up del nuevo fichero creado <source lang=php> .... Schema::table('usuarios', function($tabla){ $tabla->rememberToken(); });
- Ejecutamos la migracion
php artisan migrate
- 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
php artisan migrate:rollback
- Si quisiéramos deshacer todas las migraciones reset
php artisan migrate:rollback
- 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
php artisan migrate:refresh
resetMigration.png
- 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
php artisan make:seeder UsuarioTableSeeder
- Primero cargamos este seeder desde el fichero DataBaseSeeder que ya teníamos en nuestro sistema
DataBaseSeeder.php |
---|
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(UsuarioTableSeeder::class); } } |
- Ahora escribimos la carga de datos como contenido del método run()
- Para ello escribiremos el siguiente código
método seed |
---|
<?php public function run() { DB::table('usuarios')->insert(array( //DB para acceder a la base de datos 'name' => 'Manuel', 'email' => 'ManuelRomeroMiguel@gmail.com', 'password' => Hash::make('manuel'), //Hash:make crea una clave, Siempre generará un hash diferente aunque usemos el mismo texto 'created_at'=> \Carbon\Carbon::now(), //Carbon es un componente laravel para gestionar fechas 'updated_at'=> \Carbon\Carbon::now() )); } |
- Como vemos usamos el componente Carbon. si no funcionara lo especificamos en composer incluyéndolo en los paquetes requeridos
"require": { //....... "nesbot/carbon": "~1.14" },
y volvemos a cargar composer
composer update
- Para ejecutar la carga podemos hacerlo recargando todas las migraciones con la opción --seed, o ejecutando solo la carga de datos
php artisan migrate:refresh --seed
- O bien
php artisan db:seed
Y tras hacerlo vemos los datos cargados
Creando el modelo
- 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
/app/Models/User.php lo cambiamos a /app/Models/Usuario.php
- Dentro del fichero donde ponía
... class User extends Eloquent ... ... protected $table = 'users'; ..
- Ponemos
... class Usuario extends Eloquent ... ... protected $table = 'usuarios'; ...
- Ahora que ya tenemos el modelo Usuario con su tabla, que previamente hemos creado vamos a poblarla
Poblando la tabla
- 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
class PoblarUsuariosSeeders extends Seeder { //put your code here public function run() { //Usando el modelo creamos un nuevo registro. Tambien se puede hacer con el método save Usuario::create(array( 'usuario' => 'manolo', 'email' => 'admin@admin.com', 'password' => Hash::make('manolo') // Hash::make() nos va generar una cadena con nuestra contraseña encriptada } }
- Para llamar a este método modificamos el método run de la clase DataBaseSeeder.php
... public function run() { Eloquent::unguard(); $this->call('DatosUsuarios'); //Esta es la línea que añadimos } ...
- Ahora ejecutando desde la consola con artisan tendremos el nuevo registro creado
php artisan db:seed
- 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
... 'model' => 'Usuario', ... 'table' => 'usuarios',
- De momento no tocamos la gestion de como recordar la password
Preparando las rutas
- 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
Route::get('/', ['before'=>'auth']
<?php // Nos mostrará el formulario de login. Route::get('login', 'Autentificacion@formularioLogin'); // Validamos los datos de inicio de sesión. Route::post('login', 'Autentificacion@validaLogin'); // Nos indica que las rutas que están dentro de él sólo serán mostradas si antes el usuario se ha autenticado. Route::group(array('before' => 'auth'), function() { // Esta será nuestra ruta de bienvenida. Route::get('/', 'Accion@index'); Route::get('logout', 'Autentificar@logOut'); }); /* Otra forma de escribir lo mismo Route::get('/',['before'=>'auth','uses'=>'Accion@index']); Route::get('/logout',['before'=>'auth','uses'=>'Autentificacion@logout']); */
- Usaremos el formulario usado para la tienda
- Para ello usaremos tienda.css. Este fichero lo debemos copiar en la carpeta
/public/css/tienda.css
- Creando los controladores
php artisan controller:make Autentificacion php artisan controller:make Accion
- 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.
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'); }
</source>
- Ahora haremos el vista formularioLogin.blade.php
<!DOCTYPE html> <!-- Desarrollo Web en Entorno Servidor --> <!-- Ejemplo Tienda Web: login.php --> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> {{ HTML::style('css/tienda.css') }} <link href="tienda.css" rel="stylesheet" type="text/css"> <title>Ejemplo Tema 4: Login Tienda Web</title> </head> <body> <div id='error'> {{-- Preguntamos si hay algún mensaje de error y si hay lo mostramos --}} @if(Session::has('mensaje')) {{ Session::get('mensaje') }} @endif </div> <div id='login'> {{ Form::open(array('url'=>'login')) }} <fieldset > <legend>Login</legend> <div class='campo'> {{ Form::label('nombre', 'Nombre de usuario') }} {{ Form::text('nombre', 'Sin nombre') }} </div> <div class='campo'> {{ Form::label('password', 'Password') }} {{ Form::text('password') }} </div> <div class='campo'> {{ Form::submit('validar') }} </div> </fieldset> {{ Form::close() }} </body> </html>
- 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
public function validaLogin(){ // Recuperamos los datos de usuario y password en dos variablesGuardamos en un arreglo los datos del usuario. $usuario = Input::get('nombre'); $pass = Input::get('password'); // Validamos los datos y además mandamos como un segundo parámetro la opción de recordar el usuario. if(Auth::attempt(['usuario'=>$usuario, 'password'=>$pass])){ return Redirect::to('/'); { // En caso de que la autenticación haya fallado manda un mensaje al formulario de login // también regresamos los valores enviados con withInput(). } return Redirect::to('login') ->with('mensaje', 'Los datos son incorrectos') ->withInput(); } }
- Ahora nos queda escribir la plantilla del sitio hello.php en la carpeta de views
- Editamos el fichero ya existente y modificamos el body
.... <body> <div class="welcome"> <h1>Wellcome a tu sitio web {{ Auth::user()->name; }}</h1> <a href="/logout">Salir.</a> </div> </body> </html>
Wellcome a tu sitio web {{ Auth::user()->name; }}
<a href="/logout">Salir.</a>
</body> </html
- logout
- Para terminar nos falta implementar el método logout
Idioma no válido.
Necesita especificar un idioma como esto: <source lang="html4strict">...</source>
lenguajes soportados para sintaxis remarcada:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
/* Volvemos a mostrar el formulario de login indicando que se cerró la sesion */ public function logOut() { Auth::logout(); return Redirect::to('login') ->with('mensaje', 'Tu sesión ha sido cerrada.'); }