From 7e5f0d042897f0f4324424b4d6473be14170208b Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Mon, 8 Sep 2025 19:30:57 +0330 Subject: [PATCH] fix: create token in register --- app/Http/Controllers/UserController.php | 45 +++++++++++++++++++++---- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index c6fa12c..86608a6 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -114,9 +114,12 @@ public function register(Request $request) 'email' => 'email|required_without:mobile', 'password' => 'string|nullable|required_with:email', 'mobile' => ['string', new MobileNumber, 'nullable', 'required_without:email'], - 'fcm_token' => 'string|nullable' + 'fcm_token' => 'string|nullable', + 'package_name' => 'string|required' ]); + $packageNameValue = $data['package_name']; + unset($data['package_name']); if (isset($data['mobile'])) { $data['mobile'] = MobileNumberHelper::formatMobile($data['mobile']); @@ -129,12 +132,38 @@ public function register(Request $request) return response()->json(['message' => 'Email already exists'], 400); } - $data['password'] = $data['password'] ?? Hash::make(Str::random(8)); - $user = User::create($data); - - // Send email verification if email exists + // ✅ Check if email can receive a message before creating the user if (isset($data['email'])) { $code = rand(1000, 9999); + + try { + // Try sending email + \Mail::to($data['email'])->send(new \App\Mail\VerifyEmailCodeMail($code)); + } catch (\Exception $e) { + return response()->json([ + 'message' => 'لطفا آدرس ایمیل خود را بررسی کنید و مجدد تلاش کنید', + ], 400); + } + } + + // Hash password + $data['password'] = isset($data['password']) + ? Hash::make($data['password']) + : Hash::make(Str::random(8)); + + // Create user only if email sending didn't fail + $user = User::create($data); + + // Attach package + if ($packageName = PackageName::where('name', $packageNameValue)->first()) { + $user->packageNames()->attach($packageName->id, [ + 'tries' => $packageName->tries, + 'fcm_token' => $data['fcm_token'] ?? null, + ]); + } + + // Save email verification code after user is created + if (isset($data['email'])) { \DB::table('email_verifications')->insert([ 'user_id' => $user->id, 'code' => $code, @@ -142,18 +171,20 @@ public function register(Request $request) 'created_at' => now(), 'updated_at' => now(), ]); - \Mail::to($user->email)->send(new \App\Mail\VerifyEmailCodeMail($code)); } + // Create token + $token = $user->createToken('token', $user->is_admin ? ['admin'] : ['user'])->plainTextToken; + return response()->json([ 'message' => 'User registered successfully.', 'user' => $user, + 'token' => $token ]); } - public function verifyEmailCode(Request $request) { $request->validate([