API en Laravel 10 | Autenticación Sanctum
ฝัง
- เผยแพร่เมื่อ 20 ก.ย. 2024
- API en Laravel 10 autenticación Sanctum - relaciones entre tablas
En este video crearemos una api con Laravel 10 usando la autenticación de Sanctum.
Crearemos 2 tablas, departamentos y empleados.
Haremos uso de Factory para insertar registros para mandarlos a llamar en un seeder.
Utilizaremos Validator para validar los campos de la solicitud.
#api #laravel #laravel10 #sanctum
-- Comandos utilizados --
Crear proyecto: composer create-project laravel/laravel company --prefer-dist
Crear modelo,migración, factory y controllador de departametnos: php artisan make:model Department -mcrf --api
Crear modelo,migración, factory y controllador de empleados: php artisan make:model Employee -mcrf --api
Crear controlador para la autenticación: php artisan make:controller AuthController
Ejecutar las migraciones y seeder:
php artisan migrate --seed
Agradezco un mundo este video, desde siempre me acostumbre a trabajar con laravel web y nunca para desarrollar una api que fuera consuimida luego por un front y la verdad me estaba dando problemas la parte de la autenticacion debido a ciertas particularidades del proyecto pero gracias a tu video logre identificar las raices de esos problemas, 10/10
Qué bueno que te sirvió 😃👍
Con este video y agregándole un poco más de complejidad como relaciones OneToOne y OneToMany agregarle también días trabajados semanal por salario estaría completo. Mil gracias aprendí mucho con este video.
Gracias por tu comentario, si he pensado complementarlo con algo más algunos me han dicho que con roles y permisos, próximamente
Contenido expecifico y sencillo de comprender.
Gracias amigo 🤜🤛
Muchas gracias, enserio super claro y bien explicado, buena metodología, siga así muy amable.
Qué bueno que te fue de ayuda el video 😃👍
Excelente contenido me ayudaste demasiado. gracias master 😎😎👍👍
Genial 👍 me da gusto saber que te fue de ayuda mi aporte, éxito ! 😃
Otro buen video, ahora si aprendí más de sanctum y laravel. Solo tengo un detalle en el logout me marca error en "tokens()" en la línea auth()->user()->tokens()->delete(); método undefined y si marca error al ejecutar el método. He buscado los cambios para laravel 11 pero sigo sin corregir el error.
cambia esa linea por la siguiente
Auth::user()->tokens()->delete();
y coloca la siguiente linea al comienzo del archivo debajo del namespace
use Illuminate\Support\Facades\Auth;
thank you!
It didn't work for me yesterday.
Or it worked, but I tested incorrectly :)
Дякую!
🇺🇦❤️
gracias amigo explicas muy bien ya realice mi primer login de laravel con angular
Genial 👍 éxito vas por buen camino
Gracias, me sirvió de mucho. Ahora a ver cómo consumirla desde el front.
Qué tal Emmanuel, ya está el video de cómo consumirla con VUE:
Consumir API con VUE 3 Autenticación Sanctum Doble CRUD | Vite Bootstrap Pinia ChartJs DataTables
th-cam.com/video/EPH3QHBJ19E/w-d-xo.html
Tal vez la siguiente semana ya esté listo el video en donde se consume con React
Oye vi tu video de Laravel 9 CRUD. Excelente!!!., te pregunto: acaba de salir la versión 10. Que tanto cambia?, Gracias
Qué tal, en el CRUD como tal no cambia en nada, puedes intentarlo en la versión 10 y sin problema… puedes compararlo en este video, este ya es en V10
¡Gracias!
cuando uno sube la apl al hosting que se coloca en estos campos?
SESSION_DOMAIN = ?
SANCTUM_STATEFUL_DOMAINS = ?
La url del sitio de donde se va a consumir, en algunos casos se consume el n el mismo dominio, entonces sería el dominio en el que se sube
Buen vídeo. Hay mucha diferencia en sanctum utilizando laravel 11 ahora que acaba de salir?, hay archivos que no veo en laravel 11
Qué tal, no hay mucha diferencia, de los archivos que no están es Handler.php ahí se añade la excepción de “No query results” pero lo podrías validar en el controlador, después subiré video actualizado a Laravel 11
Para las validaciones no sería mejor usar los ficheros Request que validan la petición? O para un ejemplo sencillo no haría falta?
Tengo una pregunta, para los querys en la base de datos no seria mejor definir la relacion entre los modelos y usar las mismas consultas de eloquent en vez de escribir el query del join y todo eso?
También se podría, cuando las tablas tengan más campos sin duda sería mejor hacer la relación en el modelo 👍
buenas ... en el minuto 35:20 hablas de modificar un archivo llamado cors.php , pasa que en laravel 11 no existe ese archivo , entonces necesito hacer esa modificación en otro lado o no hace falta modificar nada en el 11 ? perdón que te moleste , ya se que el tutorial es para laravel 10 , pero es que cuando instale laravel no me dejo elegir la versión y ahora ya estoy en el baile y me gustaria resolverlo con laravel 11. muchas gracias .
Qué tal, para manejar API en laravel 11 debes ejecutar: php artisan install:api
Para los cors: php artisan config:publish cors
Así podrás acceder a config/cors.php
@@programandocondancruise que genio que sos respondiendo al toque . Ya casi lo tengo andando Muchas gracias .
Va, espero si te salga 👍😃
NOTA: en el archivo Handler.php.. me obligo a insertar estos components :
use Illuminate\Support\Facades\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
Fue la unica forma que logre ativar esta funcion Exception
public function register(): void
{
$this->renderable(function (NotFoundHttpException $e, $request) {
if ($request->is('api/departaments/*')) {
return response()->json([
'status' => false,
'message' => 'The Department Selected id is invalid'
],404);
}
if ($request->is('api/employees/*')) {
return response()->json([
'status' => false,
'message' => 'The Employee Selected id is invalid'
],404);
}
});
}
yo en vez de hacer lo de handler lo resolvi de esta forma : public function show($id)
{
$department = Department::find($id);
if (!$department) {
return response()->json([
'status' => false,
'message' => 'Department not found'
], 404);
}
return response()->json([
'status' => true,
'data' => $department
]);
}
@Adrianseimandi está bien 👍 … recuerda que aplica también para el update y el delete
Que buen video me ha funcionado, me gustaria ver como podría manejar diferentes roles de usuario en la api
Qué tal, si tengo en mente hacer videos para manejar roles tanto con api como con inertia
@@programandocondancruise serían interesante los roles con Api, en inertia hay un poco documentación.
Gracias el video, muy claro. Pregunta... ¿Cómo se llama el tema que usas para VS Code? Se ve muy bien para laravel.
Qué tal Mario… fue personalizado yo hice la combinación de colores 😅 tuve la intención de publicarlo pero no me acuerdo porque no lo hice solo quedó en el repositorio: github.com/DannCruise/DanCruzColor
una pregunta, para consumir la api tendremos que enviar el token por vue.js cada ves que hacemos una peticion?
Así es, se tiene que enviar el token desde el cliente que lo consumas
Hola amigo como le podria hacer su mi tabla usuarios no es la q viene por defecto trae diferente nombre y diferente nombres de campos ? Gracias por el video
Qué tal, si creaste tu propio modelo sería similar pero usando el nombre de las columnas de tu propia tabla
Genial todo , peor que pena que todo esto en Laravel 11 ya no sirve porque hay varias diferencias y para uno que esta arrancando la verdad es un dolor de huevos porque así no se puede aprender , este es el gran problema de todos estos Framework que nunca terminan de cerrar y cada versión deja de ser compatible con la anterior en lapsos de tiempo muy cortos , te obliga a estar cambiando todo , no tienen continuidad .. todo lo que te "ahorras" desarrollando en tiempo con laravel , lo terminas gastando cuando tenes que ponerte a pasar las aplicaciones a versiones nuevas . Consulta: ¿tenes esto mismo , este tuto pero para laravel 11 ? . Gracias .
Qué tal, casi todo funciona en Laravel 11 con excepción la validación del not found que se hace en Exeptions/Handler.php … este proyecto si lo han hecho en laravel 11 y migrado de laravel 10 al 11 … Próximamente haré video de cómo pasarlo a Laravel 11 y también de cómo hacer una API desde cero en Laravel 11 ... la vdd si cuando uno está aprendiendo son difíciles estos cambios, te recomiendo aprender en alguna versión en específico y después te será fácil migrar entre versiones, ánimo amigo !
@@programandocondancruise Espero con ansias el video con laravel 11 ya que trate de hacer los cambios para que esto funcione con el 11 pero no lo logre , me gustaria poder hacer esto con laravel 11 de entrada , ya que es el mas actual . Saludos,. Gracias .
@@programandocondancruise lo del Handler lo deje de lado y resolvi de esta forma por ejemplo para department : public function show($id)
{
$department = Department::find($id);
if (!$department) {
return response()->json([
'status' => false,
'message' => 'Department not found'
], 404);
}
return response()->json([
'status' => true,
'data' => $department
]);
}
Hola primero quiero agradecer, excelente tutorial... por otra parte te quería consultar... cuando intento verificar con postman me genera el siguiente error : Method Illuminate\\Validation\\Validator::validateRequiered does not exist ---- de casualidad sabes como solucionar esto, he intentado un mil cosas y nada. y de nuevo Gracias por tu gran aporte.
Hola! Podrías intentar colocándole un use :
use Iluminate\Support\Facades\Validator;
consulta el \Validator me da error lo otro usaste php 8.2 o 8.1
use Illuminate\Support\Facades\Validator; y listo
Buenas. Gracias por el vídeo... la referencia a \Validator no se encuentra. No me deja seguir. ¿De dónde sale ese \Validator?
Me dio el mismo Error y el DB en la referencia del raw. Logro eliminar este erro?
el la parte de arriba de cada Models (Employee oh Department) debe importar ese soport con: use Iluminate\Support\Facades\Validator; de lo contrario la function Validator no tendra efecto.. otras Detalla escribir Validator con V "MAYUSCULA"
Hola me funciona los metodos de registrar y login pero al momento de implementar Route::middleware(['auth:sanctum'])->group(function () {
Route::get('/status', [sio_controller::class, 'ctl_status']);
}); me manda el error de "message": "Unauthenticated." aunque le ponga el token y los headers
Me pasa lo mismo!! 😟
Conseguiste resolverlo? no encuentro solución!!
Pudiste resolverlo?
hola. Intento eliminar un depto que tiene relacion y me devuelve un error horrilble: Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fai...
¿como seria el codigo en handle?
gracias.
Qué tal José, buena observación y error de mi parte, se podría validar en la misma función destroy de la siguiente manera:
if (Employee::where('department_id', $department->id)->exists()) {
return response()->json([
'status' => false,
'errors' => ['The department is busy']
],400);
}
Y hay que añadir el modelo en la parte de arriba:
use App\Models\Employee;
Muchas gracias por la observación
tengo el problema del cors y en laravel 11 ya no existe el kernel.php ... fuck
Auth 27:20 min
Amigo como puedo consumir esa api en mi web, o alguien que me pueda explicar.
Qué tal, tengo otros 2 videos para consumirla, con vue y también react
Consumir API con React Crud | Autenticación Sanctum | Vite Bootstrap ChartJs Paginación
th-cam.com/video/IAPSskp89O4/w-d-xo.html
Si no tengo codigo fuente el video pierde 50% de atractivo. Me da pereza escribir, y un video casi siempre veo a doble de su velocidad
pongase a programar y deje de andar copiando y pegando :V
@@anorlondocherokee2221 jjaja solo te daba consejo, tomalo o dejalo.
Alto vago (?(