From daa72ce4c66a6337492ff3764e5c3ed462facbf8 Mon Sep 17 00:00:00 2001 From: Tiago Ramos <2222055@my.ipleiria.pt> Date: Thu, 11 Dec 2025 21:13:56 +0000 Subject: [PATCH] Added the register endpoint --- api/app/Http/Controllers/AuthController.php | 27 +++++++++++++++++ api/app/Http/Requests/RegisterRequest.php | 32 +++++++++++++++++++++ api/app/Models/User.php | 2 ++ api/routes/api.php | 2 ++ 4 files changed, 63 insertions(+) create mode 100644 api/app/Http/Requests/RegisterRequest.php diff --git a/api/app/Http/Controllers/AuthController.php b/api/app/Http/Controllers/AuthController.php index 5064994..9466d28 100644 --- a/api/app/Http/Controllers/AuthController.php +++ b/api/app/Http/Controllers/AuthController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\ValidationException; +use App\Models\User; +use App\Http\Requests\RegisterRequest; class AuthController extends Controller { @@ -38,4 +40,29 @@ class AuthController extends Controller 'message' => 'Logged out successfully', ]); } + public function register(RegisterRequest $request) + { + if (User::where('email', $request->email)->exists()) { + return response()->json(['message' => 'Email already registered'], 409); + } + + $user = User::create([ + 'email' => $request->email, + 'nickname' => $request->nickname, + 'name' => $request->name, + 'password' => bcrypt($request->password), + 'photo_avatar_filename' => $request->photo, + ]); + + $user->coins_balance = 10; + $user->save(); + + $token = $user->createToken('auth-token')->plainTextToken; + + return response()->json([ + 'message' => 'User registered successfully', + 'user' => $user, + 'token' => $token, + ], 201); + } } diff --git a/api/app/Http/Requests/RegisterRequest.php b/api/app/Http/Requests/RegisterRequest.php new file mode 100644 index 0000000..5c0b21f --- /dev/null +++ b/api/app/Http/Requests/RegisterRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + 'email' => 'required|email|unique:users,email', + 'nickname' => 'required|string|max:255', + 'name' => 'required|string|max:255', + 'password' => 'required|string|min:3', + 'photo' => 'nullable|string', + ]; + } +} diff --git a/api/app/Models/User.php b/api/app/Models/User.php index a6ab88e..10a6d7b 100644 --- a/api/app/Models/User.php +++ b/api/app/Models/User.php @@ -22,6 +22,8 @@ class User extends Authenticatable 'name', 'email', 'password', + 'nickname', + 'photo_avatar_filename', ]; /** diff --git a/api/routes/api.php b/api/routes/api.php index 738544f..a32a56c 100644 --- a/api/routes/api.php +++ b/api/routes/api.php @@ -16,4 +16,6 @@ Route::middleware('auth:sanctum')->group(function () { Route::post('logout', [AuthController::class, 'logout']); }); +Route::post('/register', [AuthController::class, 'register']); + Route::apiResource('games', GameController::class); \ No newline at end of file -- 2.54.0