dummybot/app/Http/Controllers/Auth/AuthController.php

51 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rule;
class AuthController extends Controller {
public function register(Request $r): JsonResponse {
$data = $r->validate([
'name' => 'required|string|max:60',
'email' => 'required|email|max:120|unique:users',
'password' => 'required|string|min:8|max:120',
]);
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$token = $user->createToken('web')->plainTextToken;
return response()->json(['user' => $user, 'token' => $token], 201);
}
public function login(Request $r): JsonResponse {
$data = $r->validate([
'email' => 'required|email',
'password' => 'required|string',
]);
$user = User::where('email', $data['email'])->first();
if (! $user || ! Hash::check($data['password'], $user->password)) {
return response()->json(['message' => 'Credenciales inválidas'], 401);
}
$token = $user->createToken('web')->plainTextToken;
return response()->json(['user' => $user, 'token' => $token]);
}
public function logout(Request $r): JsonResponse {
$r->user()->currentAccessToken()->delete();
return response()->json(['ok' => true]);
}
public function me(Request $r): JsonResponse {
return response()->json($r->user());
}
}