laravel 5.6 autenticacion usuario


laravel viene con un controlador en app/http/controllers/Auth llamado LoginController

este usa el trait trait AuthenticatesUsers
que tiene el metodo  showLoginForm que devuelve la vista auth.login(hay que crearla)

en las rutas web.php

Route::get('login', ['as'=>'login', 'uses'=>'Auth\LoginController@showLoginForm']);

el formulario llamara a login pero por el metodo Post

Route::post('login', ['as'=>'login', 'uses'=>'Auth\LoginController@showLoginForm']);

crearemos una vista con el formulario de login

@extends('layout')

@section('contenido')

<h1>Login</h1>

<form action="{{ route('login') }}" method="POST">
{!! csrf_field() !!}
<input type="text" name="email" placeholder="email">
<input type="password" name="password" placeholder="password">
<input type="submit" value="ingresar">
</form>
@stop

previamente creamos algun usuario de prueba en nuestra BD
por ejemplo asi

Route::get('creausuario/{name}', ['as'=>'creausuario', function($name){
$user = new App\User;
$user->name =$name;
$user->email =$name.'@gmail.com';
$user->password =bcrypt('123123');
$user->save();
return $user;
}]);

cuando laravel validate que el email y password existen, redirecciona a la ruta home

podemos crear tambien la tuta para salir

Route::get('logout', ['as'=>'logout', 'uses'=>'Auth\LoginController@logout']);


y modificar el layout para que aparezcan las opciones de login o salir segun si se esta logueado:

@if( auth()->guest() )
  <a href="{{ route('login') }}"  class ="{{ activeMenu('login') }}">login</a>
@else
  <a href="{{ route('logout') }}"  class ="{{ activeMenu('logout') }}">Salir</a>
    @endif



para validar el ingreso a una pagina solo si el usuario esta authenticado
usamos el middleware  Authenticate.php

el cual redirecciona al login si el usuario no esta authenticado

este middleware esta registrado en el kernel con la key 'auth'

 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,

entonces
si por ejemplo queremos restringir el acceso al modulo de mensajes
en el constructor de messagesController le especificamos el middleware

 public function __construct(){
        $this->middleware('auth');

    }

restringiendo el ingreso a todas las funciones del controller

esto lo podemos cambiar, especificando a quienes aplicarlo 'only' o a cuales no 'except'

por ejemplo si queremos que la pagina de contacto sea de acceso libre

 public function __construct(){
       $this->middleware('auth',['except'=>['create']]);


 }

       
       




No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable