No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
23H
23M
48S
Curso de PHP con Laravel

Curso de PHP con Laravel

H茅ctor Benitez

H茅ctor Benitez

Login

24/25
Recursos

Para evitar que todo el contenido de la aplicaci贸n sea p煤blico, es necesario utilizar un sistema de autentificaci贸n de los usuarios. Para esto tenemos muchos mecanismos en Laravel supremamente sencillos de utilizar.

  • PHP artisan nos ofrece make:auth que es una estructura para hacer un login y registro b谩sicos con las vistas y las rutas.
    (Si el comando arriba no te funciona es porque las versiones m谩s recientes de Laravel ha deprecado este comando, pero puedes utilizar este: )
composer require laravel/ui
php artisan ui vue --auth
  • Al agregar la l铆nea $this->middleware(鈥榓uth鈥); tenemos el controlador protegido, lo que quiere decir que no puede ser accedido si el usuario no est谩 logueado.

Aportes 39

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Para los que no les funcion贸 el comando make:auth en la nueva version de Laravel 6:

  • Instalar node.js de: https://nodejs.org/es/download/
    Luego de instalar node.js, escribimos los siguientes comandos en consola:
  • composer require laravel/ui --dev
  • php artisan ui vue --auth
  • npm install && npm run dev
    Finalmente, debemos escribir: php artisan ui:auth
    Nota: se deben escribir los comandos en consola, pero dentro de la carpeta del proyecto.

Si vez este cursos en 2020 e instalaste Laravel 6.0 el comando make:auth ya no existe ahora debe realizar los siguiente comando

composer require laravel/ui --dev

php artisan ui vue --auth

Laravel crea la pantalla de autenticaci贸n usando un scalford que cuenta con vue

Para los que nos sale el error Command 鈥渕ake:auth鈥 is not defined de la reciente actualizaci贸n de Laravel 6.0

Hice esto, espero les funcione

composer require laravel/ui --dev
php artisan ui vue --auth
npm install && npm run dev

Para los que est谩n utilizando Laravel 6.0 en adelante !
鈥> EL comando make:auth , ya no funciona.
鈥>Pueden utilizar :
1. composer require laravel/ui
2.php artisan ui vue --auth

Reto cumplido.
Cada reporte se asocia con un usuario en el sistema.

Cuando se env铆a por correo electr贸nico, aparece un informe detallada del reporte enviado.

Para los que deseen, cre茅 autorizaci贸n de acciones por pol铆ticas. Para evitar que un usuario pueda ver, modificar o eliminar un reporte de otro usuario. Les comparto mi enlace del proyecto en GitHub.

Click aqu铆

Si no se quiere instalar el auth con vue se puede hacer de esta manera con boostrap como en el curso.

composer require laravel/ui --dev

Despues se ejecutan estos dos comandos seguidos uno tras otro

php artisan ui:auth

php artisan ui:controllers

Una vez realizado esto nos creara el view app.blade.php en resources/layouts

Tenemos que modificarlo para a帽adir la carga de los ficheros css y js de boostrap poniendo lo siguiente en las secciones de Scripts y Styles

<!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

...

    <!-- Styles -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">```


Con esto tendremos el sistema igual que el de la clase y no hara falta vue para que podamos trastear sin miedo a confusion :D

Scaffolding:

El t茅rmino hace referencia a una estructura de r谩pida configuraci贸n para tu app o proyecto.

Si tienen Windows 10 y Laravel 7, les recomiendo leer el siguiente comentario, donde esta el paso a paso de como hacerlo, ya que make:auth ya no viene en Laravel 7.
https://platzi.com/comentario/945629/

Dios bendiga Code generation con scaffold, en cualquier framework es un amor .net, laravel, ruby and rails, etc.

En mi caso para restringir el acceso 煤nicamente a usuarios registrados tuve que agregar el middleware desde las rutas:

Route::resource('/expense-report', 'ExpenseReportController')->middleware('auth');

Laravel 5.7

Genial el framework Laravel 馃槂

Laravel es Genial!!!

Menuda maravilla! 馃槃

Utilidades para quienes lo toman en 2020.

  1. Comandos necesarios para la interfaz de auth ( no existe 鈥榤ake:auth鈥 ahora):

     `composer require laravel/ui `
     `npm install && npm run dev `
     `php artisanui vue --auth`
    
  2. Otra cosa importante que considerar es el cache, si es que alguno se percato que cambiando el nombre de la app en .env no funcionaba utilice en siguiente comando en consola:

php artisan config:cache

Excelente por la autogeneracion de la interfaz y logica de login con artisan
Excelente Laravel!!

Si tengo distintos tipos de usuarios como hago? utilizo politicas?

Compartir por aqui un pequeno hack, en dado caso que la ruta no este protegida desde el controlador mediante el middleware.
.
A partir de la plantilla principal que se este usando en blade, se puede forzar a que el usuario logeado exista, de lo contrario siempre pedira el login:

@if(!Auth::user())
	<script>window.location = "{{ route('login') }}";</script>
	<?php exit; ?>
@endif

Esta clase la vi para recordar los viejos tiempos, jajaj.
.
Pero esto cambio del cielo a la tierra en la ultima version (Laravel 9). El juguete para crear la estructura de login se llama Breeze. Y puede ser combinado con blade, react o next.js. Ademas ahora viene por defecto integrado con tailwind.
Laravel Starter kits

esa fue de las cosas q me hicieron amar laravel jejeje

si instalas una version anterior de laravel en mi caso la 7 hay que inidicarle la version del ui

composer require laravel/ui:^2.4

No me gust贸 nada este v铆deo, no hace bien los llamados del CSS en el auth, nunca lo especifica

Para los que no les carga el css de las paginas es por el vue pueden usar:

npm i vue-loader

Si hacen el proyecto en la version 6 del framework en adelante, tendrian que seguir estos pasos:
Authentication - Laravel 6:

El laravel/uipaquete de Laravel proporciona una forma r谩pida de estructurar todas las rutas y vistas que necesita para la autenticaci贸n usando algunos comandos simples:

Ejecutar en la consola:
composer require laravel/ui "^1.0" --dev

Luego ejecutar el siguiente comando:
php artisan ui vue --auth

Este comando debe usarse en aplicaciones nuevas e instalar谩 una vista de dise帽o, vistas de registro e inicio de sesi贸n, as铆 como rutas para todos los puntos finales de autenticaci贸n. Un HomeControllerTambi茅n se generar谩 para manejar las solicitudes de acceso a post-tablero de su aplicaci贸n.

el correo aun no me llega a mi email personal :鈥(

Alguien me puede ayudar con este error

cuando le doy submit a un new expense me sale eso error y no me redirecciona a la ruta del expense creado y si lo corro como local con php artisan serve si me funciona, pero ya en el servidor de heroku me sale ese error.

Alguien puede aclararme un poco esta linea?
$this->authorizeResource(ExpenseReport::class, 鈥榚xpense_report鈥);

para autorizar el recurso, entiendo que se le pasa la class a llamar que es ExpenseReport que lo llama en el show del controlador ExpenseReportController pero no entiendo el nombre que corresponde a la variable id, porque es expense_report y en vez de expense_reports?

Si la url es expense_reports/6 en la cual el id del reporte es 6 .

Para finalizar, la cereza en el pastel鈥 Espectacular !

Tengo la siguiente inquietud: Estoy realizando el ejercicio en Laravel 5.6, y como bien sabemos Laravel 5.6 excluy贸 el AuthController, y el tema del login y del logout lo maneja por medio de la carpeta Foundations, motivo por el cual no se podr铆a realizar un logueado supervisado por el tipo de usuario (Por ejemplo: un tipo que solo puede crear los reportes, otro que solo puede consultarlos, etc)鈥 La aplicaci贸n siempre queda 鈥渆stancada鈥 cuando se ingresa con un determinado tipo de usuario que tiene restricciones a determinados m贸dulos, siempre se va a quedar estancado en una pantalla de inicio, y cuando se trata de hacer el logout por medio de la URL, siempre se sigue quedando estancado en la p谩gina de inicio, 鈥渃ondenado鈥 a que nunca pueda salir de ah铆鈥 ni decir cuando se trata de ingresar por la URL con la opcion /login: nunca puedo acceder al login 驴Me podr铆an decir como se puede solucionar este problema en 5.6, para hacer que se pueda aplicar la validaci贸n por el tipo de usuario? Quedo atento. Gracias

Yo tenia Laravel 16.6.0 y ya no existe make:auth, pero con la documentaci贸n https://laravel.com/docs/6.x/authentication

encontre estos 2 comandos

composer require laravel/ui "^1.0" --dev

php artisan ui vue --auth

y listo problema arreglado

Para los que tengan versi贸n de Laravel 6 en adelante es necesario que ejecuten los siguientes comandos:

composer require laravel/ui
php artisan ui vue --auth

Despu茅s la consola ter pide que ejecutes los siguiente, para que carguen los css de las vistas

npm install && npm run dev

Desafortudamante en este proyecto me aparecieron errores al ejecutar este ultimo comando(que es necesario) que no puede encontrar soluci贸n. Por los tanto les recomiendo que crean un nuevo proyecto Laravel y hacer todo este proceso desde el principio para evitar futuros problemas

woooooow excelente clase, muy buen profesor, muchas gracias 馃槃

Que bien Hector!

Hola buen d铆a, ya logr茅 asociar los reportes al usuario que est谩 autenticado de la siguiente manera:

0- Cree una migraci贸n para agregar una nueva columna a la tabla expense_report:: report_user_id, donde guardar谩 el id del usuario que crea el reporte.

1- En la vista de Create New Expense Report, agregu茅 una columna tipo hidden que guarda el id del usuario que est谩 logueado,

<input type="hidden" class="form-control" name="report_user_id" id="report_user_id" value="{{ Auth::user()->id }}">

eso viaj谩 en el Request y se guarda desde el controlador de ExpenseReportController.

$ValidData= $request->validate([
            'title'=>'required|min:10',
            'report_user_id'=>'required|integer'
        ]);

        $report = new ExpenseReport();
        $report->title=$ValidData['title'];
      $report->report_user_id=$ValidData['report_user_id'];
        $report->save();

3- Luego en la consulta a la base de datos, cuando vamos por los Expense Reports, lo filtro por la nueva columna report_user_id con el id del usuario que est谩 logueado y eso es todo:

return view('expenseReport.index',[
            'expenseReports'=> ExpenseReport::all()->where('report_user_id',Auth::user()->id)
        ]);

Espero est茅 bien y les sirva de algo.

Saludos

Es incre铆ble lo f谩cil que es hacer un sistema de autenticaci贸n usando Laravel xD Efectivamente el comando make:auth ya no funciona pero en el curso anterior lo hacen con la nueva forma, me encanta Laravel 鉂わ笍

Estoy usando laravel 8 pero no extien el comando make:auth, qu eprocede ?

si me quiero loguear con mi numero de documento en vez de correo que tendria que hacer? pd: ya intente modificando controlador modelo y vista pero me tira error asi que volvi al principio algun tutorial?

si no te cambia el nombre de la app_name usa en consola:

php artisan config:cache

y se limpiara el cache

Cuando tom茅 el curso Laravel ya iba por la versi贸n 8.1 y no hab铆a artisan make:auth, si alguien necesita esto fue lo que hice,

Tomando como base esta documentaci贸n https://laravel.com/docs/7.x/authentication

cree un nuevo controlador siguiendo los mismos procedimientos de antes** php artisan make:controller LoginController** con este c贸digo en su interior (a tener en cuenta que las lineas que estan comentadas las puse en el tinker para crear r谩pidamente un usuario para probar)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function index()
    {
        /*
        $user = new User();
        $user->name = "admin";
        $user->email = "admin@arturgeek.com";
        $user->password = Hash::make('123456');
        $user->save()
        */
        return view("login.index");
    }

    public function authenticate(Request $request)
    {
        $credentials = $request->only('email', 'password');
        if (Auth::attempt($credentials)) {
            // Authentication passed...
            return redirect( "/expense_reports/");
        }
    }

    public function logout()
    {
        Auth::logout();
        return redirect( "/");
    }
}

Creo que no sobra poner mi estructura en routes

Route::get( "/" , [ 'as' => 'login' , 'uses' => 'App\Http\Controllers\[email protected]' ] );
Route::post( "/login" , [ 'as' => 'login' , 'uses' => 'App\Http\Controllers\[email protected]' ] );
Route::get( "/logout" , [ 'as' => 'login' , 'uses' => 'App\Http\Controllers\[email protected]' ] );

Cree una nueva carpeta en views donde puse index.blade.php, con el siguiente contenido, en este punto importante agregar el {{ csrf_field() }} ya que de no hacerlo salta un error 419 expired

@extends(鈥榣ayouts.base鈥)
@section(鈥榗ontent鈥)
<div class=鈥渞ow鈥>
<div class=鈥渙ffset-4 col-4鈥>
<form action=鈥渓ogin鈥 method=鈥淧OST鈥>
{{ csrf_field() }}
<div class=鈥渇orm-group鈥>
<label for=鈥渆mail鈥>Email</label>
<input
type="email"
class="form-control"
id="email"
name=鈥渆mail"
placeholder=鈥淭ype your email"
value={{ old(鈥渆mail鈥) }}鈥
/>
</div>
<div class=鈥渇orm-group鈥>
<label for=鈥減assword鈥>Password</label>
<input
type="password"
class="form-control"
id="password"
name="password"
placeholder=鈥淭ype your password鈥
/>
</div>
<button type=鈥淪ubmit鈥 class=鈥渂tn btn-primary鈥>Login</button>
</form>
</div>
</div>
@endsection

Finalmente en el base.blade.php agregu茅 lo siguiente para dar la opci贸n de cerrar sesi贸n

@auth
<a href="{{ url(鈥渓ogout鈥) }}">Logout</a>
@endauth

Espero les sirva.