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