From b82f5042b2fe2c67528baf18b503f51ac7882964 Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Tue, 2 Sep 2025 00:51:54 +0330 Subject: [PATCH] feat: add package name to login --- app/Http/Controllers/UserController.php | 39 ++++++++++++++++--------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 4f270b1..815513c 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -22,31 +22,42 @@ use App\Models\UserBreathingSession; class UserController extends Controller { - public function login(Request $request) +public function login(Request $request) { $data = $request->validate([ 'auth' => 'string|required', - 'password' => 'string|required' + 'password' => 'string|required', + 'package_name' => 'string|required', + 'fcm_token' => 'string|nullable' ]); + if (!$packageName = PackageName::where('name', $data['package_name'])->first()) { + return response()->json(['message' => 'package name not found'], 404); + } + $authType = filter_var($data['auth'], FILTER_VALIDATE_EMAIL) ? 'email' : 'mobile'; if ($authType == 'mobile') { $data['auth'] = MobileNumberHelper::formatMobile($data['auth']); } $user = User::where($authType, $data['auth'])->first(); - // return response()->json([ - // 'user' => $user, - // // 'token' => $token, - // 'hash'=> trim($data['password']), - // 'password' => $user ? $user->password : null, - // 'check' => $user ? Hash::check(trim($data['password']), $user->password) : null, - // ]); if (!$user || !Hash::check(trim($data['password']), $user->password)) { return response()->json(['message' => 'wrong credentials'], 404); } + // Attach package if not exists + if (!$user->packageNames()->where('package_names.id', $packageName->id)->exists()) { + $user->packageNames()->attach($packageName->id, [ + 'tries' => $packageName->tries, + 'fcm_token' => $data['fcm_token'] ?? null, + ]); + } else { + $user->packageNames()->updateExistingPivot($packageName->id, [ + 'fcm_token' => $data['fcm_token'] ?? null, + ]); + } + $token = $user->createToken('token', $user->is_admin ? ['admin'] : ['user'])->plainTextToken; return response()->json([ @@ -55,8 +66,7 @@ public function login(Request $request) ]); } - - public function register(Request $request) +public function register(Request $request) { $data = $request->validate([ 'first_name' => 'string|nullable', @@ -64,8 +74,10 @@ 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' ]); + if (isset($data['mobile'])) { $data['mobile'] = MobileNumberHelper::formatMobile($data['mobile']); if (User::where('mobile', $data['mobile'])->exists()) { @@ -76,11 +88,11 @@ public function register(Request $request) if (isset($data['email']) && User::where('email', $data['email'])->exists()) { return response()->json(['message' => 'Email already exists'], 400); } - $pass = $data['password'] ?? null; - $data['password'] = isset($data['password']) ? $data['password'] : Hash::make(Str::random(8)); + $data['password'] = $data['password'] ?? Hash::make(Str::random(8)); $user = User::create($data); + // Send email verification if email exists if (isset($data['email'])) { $code = rand(100000, 999999); \DB::table('email_verifications')->insert([ @@ -101,6 +113,7 @@ public function register(Request $request) + public function verifyEmailCode(Request $request) { $request->validate([