Crear Auth

Crear una base de datos vacía y configurarla en el .env, por ejemplo:
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('...');
}

No hay comentarios:

Publicar un comentario