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