martes, 24 de noviembre de 2015

12 - Tutorial de Laravel 5 - Auth Middleware (Panel de Usuario)




En este capítulo del Tutorial de Laravel 5 continuamos con el sistema de usuarios y concretamente empezaremos a construir el Panel de Acceso para los usuarios que se han autenticado correctamente.

La primera modificación la realizamos en los controladores AuthController y PasswordController para redireccionar a los usuarios una vez se han autenticado o han reseteado el password correctamente al panel de usuario que vamos a construir.

En AuthController agregaremos la siguiente propiedad a la clase:

protected $redirectPath = '/user';


En PasswordController agregaremos la siguiente propiedad a la clase:

protected $redirectTo = '/user';


La ruta a la que apuntan ambas propiedades aun la tenemos que crear, primeramente crearemos un nuevo controllador llamado UserController.php en la carpeta "Controllers" con el siguiente código:

<?php 

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller{
	
	public function __construct(){
		$this->middleware('auth');
	}
	
	public function user(){
		return View('user.user');
	}
	
}


En este controlador estamos haciendo uso de Middleware para permitir el acceso a las acciones del mismo sólo a los usuarios autenticados, también se puede ver la acción "user" esta acción será posteriormente conectada a la ruta "user". Ahora vamos a crear la vista user pero primero tenemos que crear la carpeta "user" en la carpeta "views", guardar en la nueva carpeta "user" la siguiente vista "user.blade.php" con el siguiente código:

@extends('layouts.home')
@section('content')
<h1>Bienvenid@ {{Auth::user()->name}} a su Panel de Control</h1>
@if (Session::has('status'))
<hr />
<div class='text-success'>
    {{Session::get('status')}}
</div>
<hr />
@endif

<img src='{{url(Auth::user()->perfiles)}}' class='img-responsive' style='max-width: 150px' />

@stop


En el capítulo anterior mostrabamos el mensaje flash "status" tras resetear el password en la vista "home", ahora vamos a quitar el "status" de la vista home y como podéis ver en la nueva vista se incluye ahí, ya que es ahí donde los usuarios serán redireccionados tras resetear sus passwords. Como podéis ver se muestra un simple título de bienvenida mostrando el nombre del usuario y abajo una imagen cuyo "src" es obtenido de una columna llamada "perfiles" esta columna la vamos a crear a continuación en la tabla "users", la columna "perfiles" es del tipo VARCHAR, longitud 255 y le asignamos un valor por defecto con la ruta hacia una imagen de perfil por defecto que asignaremos a los usuarios que se registren, por ejemplo, perfiles/perfil.jpg.

Lógicamente tenemos que crear la carpeta "perfiles" en la carpeta "public" de nuestro proyecto y agregar la imagen que queremos por defecto para los usuarios registrados, buscar en google imágenes, por ejemplo, con la palabra "perfil", en el resultado podéis encontrar muchas imágenes que pueden ser válidas para utilizarlas, la guardáis en la carpeta perfiles como perfil.jpg

Otra cosa importante es modificar la dirección de un enlace del ménu en el Layout "home", es decir, dónde aparece el nombre del usuario, incluyendo la nueva ruta "user".

<li><a href="{{url('user')}}">{{Auth::user()->name}}</a></li>


Finalmente crear la ruta "user" en routes.php ...

Route::get('user', 'UserController@user');


Ahora pueden realizar un test para ver como al iniciar sesión son redireccionados a la ruta "user" y comprobar como se muestra la imagen de perfil por defecto.