No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
9 Hrs
19 Min
25 Seg
Curso de API REST con Laravel

Curso de API REST con Laravel

Profesor Italo Morales F

Profesor Italo Morales F

Autenticación

15/18
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Comparto el código del archivo:
App/Http/Controllers/Api/LoginController.php

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Models\User;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
  // Metodo que recibe el formulario
  public function login(Request $request)
  {
    $this->validateLogin($request);

    // Login true

    // Login false

  }

  // Metodo que verifica que llegue la informacion correctamente
  public function validateLogin(Request $request)
  {
    return $request->validate([
      'email' => 'required|email',
      'password' => 'required',
      'name' => 'required'
    ]);
  }
}

Como un feature extra pueden tener una clase que se encargue de validar el Request de la siguiente manera

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class LoginRequest extends FormRequest
{
  public function rules()
  {
    return [
      'email' => 'required|email',
      'password' => 'required',
      'name' => 'required'
    ];
  }

  public function messages() {
    return [
      'email.required' => 'The email is required, test',
      'email.email' => 'The email must be valid',
      'password.required' => 'The password is required',
      'name.required' => 'The name is required'
    ];
  }
}

Entonces en el controllador ponen lo siguiente

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

use App\Models\User;
use App\Http\Requests\LoginRequest;

class LoginController extends Controller
{
    public function login(LoginRequest $request) {

        if(Auth::attempt($request->only('email', 'password'))) {
            return response()->json([
                'token' => $request->user()->createToken($request->name)->plainTextToken,
                'message' => 'Success'
            ]);
        } else {
            return response()->json([
                'message' => 'Unhautorized'
            ], 401);
        }
    }

}

importan el LoginRequest desde donde lo guardaron y lo pasan como parametro al metodo en el controlador, automaticamente hata las validaciones.

Yo por ejemplo, solo por tema de gusto, cada persona lo haría como quisiese, llamaría al controlador AuthController, creo que engloba mejor ambos métodos.
Okey perfecto, pero falta el codigo para cerrar o destruir la sesion

Auth

Usando Validator:make() para mensajes personalizados:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class LoginController extends Controller
{
    public function login(Request $request)
    {
        $validator = $this->validateLogin($request);

        if ($validator->fails()) {
            //login fails: do anything

        } else {
            // login success: do something

        }
    }

    public function validateLogin(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|email',
            'password' => 'required',
            'name' => 'required'
        ], [
            'email.required' => 'The Email field is required',
            'email.email' => 'The Email is not a valid email',
            'password.required' => 'The Password field is required',
            'name.required' => 'The Name field is required'
        ]);

        return $validator;
    }
}

a veces decimos sencillo y terminamos generando 4 archivos con 3 lineas cada uno. meter mejor eso en el metodo login y listo

php artisan make:controller Api/LoginController