No tienes acceso a esta clase

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

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 6

Preguntas 0

Ordenar por:

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

o inicia sesión.

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.

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