create loggin and register whit their form requst

This commit is contained in:
2026-04-29 16:52:18 +03:30
parent b24b61c754
commit 51aa3b157c
5 changed files with 136 additions and 0 deletions

View File

@@ -30,4 +30,5 @@ class User extends Authenticatable
'password' => 'hashed',
];
}
protected $guarded = ['id'];
}

View File

@@ -0,0 +1,64 @@
<?php
namespace App\User\Controller\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\User\Requests\Auth\LoginRequest;
use App\User\Requests\Auth\ًRegisterRequest;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
public function register(ًRegisterRequest $request): JsonResponse
{
$user = User::query()->create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('Register Token')->accessToken;
return response()->json([
'success' => true,
'token_type' => 'Bearer',
'access_token' => $token,
'user' => [
'id' => $user->id,
'username' => $user->username,
],
], 201);
}
public function login(loginRequest $request): JsonResponse
{
if ($request->filled('email')) {
$user = User::query()
->where('name', $request->name)->first();
}
elseif ($request->filled('username')) {
$user = User::query()
->where('name', $request->name)
->first();
}
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json([
'message' => 'Invalid credentials'
], 401);
}
$token = $user->createToken('Login Token')->accessToken;
return response()->json([
'success' => true,
'token' => $token,
'user' => [
'id' => $user->id,
'name' => $user->name,
],
]);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\User\Requests\Auth;
use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules(): array
{
return [
'name' => 'required|exists:users,name',
'email' => 'required|email|exists:users,email',
'password' => 'required|string|regex:/^(?=.*[a-zA-Z])(?=.*\d).+$/|min:8',
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\User\Requests\Auth;
use Illuminate\Foundation\Http\FormRequest;
class ًRegisterRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules(): array
{
return [
'name' => 'required_without:email|unique:users,name',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|regex:/^(?=.*[a-zA-Z])(?=.*\d).+$/|min:8',
];
}
}

View File

@@ -1,8 +1,19 @@
<?php
use App\User\Controller\Auth\AuthController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');
Route::prefix('user')->group(function () {
Route::prefix('Auth')
->namespace('Auth')
->controller(AuthController::class)
->group(function () {
Route::post('register', 'register')->name('register');
Route::post('login', 'login')->name('login');
});
});