public const HOME = '/loquesea';
Mostrando entradas con la etiqueta Auth. Mostrar todas las entradas
Mostrando entradas con la etiqueta Auth. Mostrar todas las entradas
Que una vez logueado se redirija a la ruta que nosotros queramos
Cambiar en \app\Providers\RouteServiceProvider.php:
Impedir el acceso a un método de un controller si no eres el user logueado
public function edit(Entry $entry) {
if (auth()->id() !== $entry->user_id) {
redirect("/");
}
...
}
También se puede hacer lo mismo en una vista:
@if ($entry->user_id == auth()->id())
...
@endif
Auth: Verificar email al registrarte
Nuestra tabla Users tiene que tener el campo email_verified_at que tiene que ser timestamp
En nuestro model Users:
Y al crear las rutas para Auth poner:
https://laravel.com/docs/7.x/verification
Ojo: Si haces la prueba en local asegúrate que el email que registras está registrado en los emails que pueden recibir en mailgun y validado.
En nuestro model Users:
class User extends Authenticatable implements MustVerifyEmail {
Y al crear las rutas para Auth poner:
Auth::routes(['verify' => true]);
Más información en:https://laravel.com/docs/7.x/verification
Ojo: Si haces la prueba en local asegúrate que el email que registras está registrado en los emails que pueden recibir en mailgun y validado.
Autentificación tanto en controller como en las views
use Illuminate\Support\Facades\Auth;
$user = Auth::user();
return view('home', compact('user'));
En la view:
{{ $user->name }}
También se puede hacer así en la view:
{{ Auth::user()->name }}
Authentication a partir de Laravel 6.0
El sistema de authentication cambia completamente a partir de Laravel 6.0, los pasos a seguir son:
1. Nada más empezar un proyecto de cero poner los datos de la bd en .env
2. Ejecutar el php artisan migrate para que se creen las tablas de users y demás.
3. Tener instalado el node.js en tu ordenador (si no está entonces instalarlo y reiniciar el ordenador).
4. composer require laravel/ui:^2.4
5. php artisan ui vue --auth
6. npm install
7. npm run dev
Si quisieras crear un proyecto desde cero que contenga ya todo lo del auth simplemente al crearlo poner:
Lógicamente para luego el login y el register en este nuevo proyecto funcione tienes que editar el .env y pasar el migrate para que cree las tablas de users y demás.
Si al hacer composer require laravel/ui te da un error ejecuta:
1. Nada más empezar un proyecto de cero poner los datos de la bd en .env
2. Ejecutar el php artisan migrate para que se creen las tablas de users y demás.
3. Tener instalado el node.js en tu ordenador (si no está entonces instalarlo y reiniciar el ordenador).
4. composer require laravel/ui:^2.4
5. php artisan ui vue --auth
6. npm install
7. npm run dev
Si quisieras crear un proyecto desde cero que contenga ya todo lo del auth simplemente al crearlo poner:
laravel new proyecto_con_auth --auth
Lógicamente para luego el login y el register en este nuevo proyecto funcione tienes que editar el .env y pasar el migrate para que cree las tablas de users y demás.
Si al hacer composer require laravel/ui te da un error ejecuta:
composer update --ignore-platform-reqs
composer require laravel/ui
Crear Auth
Crear una base de datos vacía y configurarla en el .env, por ejemplo:
Lo primero del todo el Laravel trae un error por defecto a la hora de hacer el migrate que hay que subsanar, en el fichero:
\app\Providers\AppServiceProvider.php añadir:
Y editar la función boot con:
CREAR LA TABLA USERS POR DEFECTO:
AÑADIR UN USERS AUTOMATICAMENTE A LA BD:
Esto te genera en database/seeds/ el fichero UsersTableSeeder que hay que modificar la funcion "run" con;
Ojo: Hay que asegurarse que tengas incluidas las librerias:
En la bd (con el phpmyadmin por ejemplo) añadir a la tabla users el campo isAdmin y que sea booleano y por defecto 0. También cambiarlo en el modelo de Users (todos los módelos estan en /app/)
Finalmente ejecutarlo para que se metan esos 50 usuarios aleatorios en la BD:
Vamos a meter el usuario administrador, en el run quitamos lo de antes y ponemos a pelo:
Y volvemos a ejecutar otra vez:
Si en algún momento necesitamos recompilar el composer porque se hayan hecho cambios:
Instalar automáticamente toda la estructura del Login:
Para comprobar que está logueado como Admin por ejemplo en el controller de app/Http/Controllers/HomeController:
Luego desde el controller para saber si está logueado o no:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=premios_nobel
DB_USERNAME=root
DB_PASSWORD=
Lo primero del todo el Laravel trae un error por defecto a la hora de hacer el migrate que hay que subsanar, en el fichero:
\app\Providers\AppServiceProvider.php añadir:
use Illuminate\Support\Facades\Schema;
Y editar la función boot con:
public function boot() {
Schema::defaultStringLength(191);
}
CREAR LA TABLA USERS POR DEFECTO:
php artisan migrate:install
php artisan migrate
AÑADIR UN USERS AUTOMATICAMENTE A LA BD:
php artisan make:seeder UsersTableSeeder
Esto te genera en database/seeds/ el fichero UsersTableSeeder que hay que modificar la funcion "run" con;
factory(App\User::class, 50)->create()->each(function ($user) {
$user->posts()->save(factory(App\Post::class)->make());
});
Ojo: Hay que asegurarse que tengas incluidas las librerias:
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
En la bd (con el phpmyadmin por ejemplo) añadir a la tabla users el campo isAdmin y que sea booleano y por defecto 0. También cambiarlo en el modelo de Users (todos los módelos estan en /app/)
Finalmente ejecutarlo para que se metan esos 50 usuarios aleatorios en la BD:
php artisan db:seed --class=UsersTableSeeder
Vamos a meter el usuario administrador, en el run quitamos lo de antes y ponemos a pelo:
DB::table('users')->insert([
'name' => 'Pepito Pérez',
'email' => 'pepito.perez@gmail.com',
'password' => '1234',
'isAdmin' => 1,
]);
Y volvemos a ejecutar otra vez:
php artisan db:seed --class=UsersTableSeeder
Si en algún momento necesitamos recompilar el composer porque se hayan hecho cambios:
composer dump-autoload
Instalar automáticamente toda la estructura del Login:
php artisan make:auth
Por defecto las rutas de los css y los js están mal porque hay que modificar el fichero resources/views/layouts/app.blade.php:
<link href="{{asset('/css/app.css')}}" rel="stylesheet">
<script src="{{asset('/js/app.js')}}"></script>
Para comprobar que está logueado como Admin por ejemplo en el controller de app/Http/Controllers/HomeController:
if (auth()->check()) {
if (auth()->user()->isAdmin) {
return view('administracion');
}
else {
return view('home');
}
}
Luego desde el controller para saber si está logueado o no:
use Illuminate\Support\Facades\Auth;
public function xxx() {
$user = Auth::user();
if(!isset($user)) { // no está logueado
return redirect('login');
}
return view('...');
}
Suscribirse a:
Entradas (Atom)