validate([ 'phone_or_email' => 'required' ]); $user = User::query() ->when(filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL), function (Builder $query) use ($request) { $query->getQuery()->where('email', $request->phone_or_email); }, function (Builder $query) use ($request) { $query->getQuery()->where('phone', $request->phone_or_email); }) ->first(); if (!$user) { $message = filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL) ? "User dengan alamat email " . $request->phone_or_email . " tidak ditemukan" : "User dengan nomor telepon " . $request->phone_or_email . " tidak ditemukan"; return Helper::responseJson(statusCode: Response::HTTP_NOT_FOUND, message: $message); } if (filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL)) { $user = User::query()->update([ 'email' => $request->phone_or_email ], [ 'email' => $request->phone_or_email, 'otp' => rand(1000, 9999), 'otp_created_at' => now() ]); } else { $user = User::query()->update([ 'phone' => $request->phone_or_email ], [ 'phone' => $request->phone_or_email, 'otp' => rand(1000, 9999), 'otp_created_at' => now() ]); } // TODO Send the OTP if (filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL)) { // Send Email } else { // Send Whatsapp } return Helper::responseJson(message: 'OTP Terkirim'); } public function validateOtp(Request $request) { $request->validate([ 'phone_or_email' => 'required', 'otp' => 'required' ]); $user = User::query() ->when(filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL), function (Builder $query) use ($request) { $query->getQuery()->where('email', $request->phone_or_email); }, function (Builder $query) use ($request) { $query->getQuery()->where('phone', $request->phone_or_email); }) ->first(); if ($user->otp == $request->otp) { return Helper::responseJson( data: [ 'token' => $user->createToken('app')->plainTextToken, 'user' => $user, ], message: 'Selamat Datang' ); } return Helper::responseJson(message: 'OTP yang anda masukan salah!'); } public function logout(Request $request) { $token = $request->bearerToken(); Auth::user()->tokens()->where('id', $token)->delete(); return response(['message' => 'Berhasil Logout.']); } }