userRepo = $userRepo; } /** * @param object $request * @return array */ public function login(Request $request) { try { $validation = Validator::make($request->all(), [ 'email' => 'required', 'country_code' => 'sometimes', 'via' => 'required|in:OTP,PASSWORD', 'password' => 'required_if:via,=,PASSWORD' ]); if ($validation->fails()) { return $this->throwValidation($validation->messages()->first()); } $response = $this->userRepo->loginVerification($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @param object $request * @return array */ public function register(Request $request) { $response = []; $verified = $request['verified'] ?? Constant::NULL; $validation = Validator::make($request->all(), [ 'name' => 'required|string', 'email' => 'required|unique:users', 'country_code' => 'required', 'dharma' => 'required' ]); if ($validation->fails()) { return $this->throwValidation($validation->messages()->first()); } try { $emailHash = md5(strtolower($request->email)); //converted to hash if (filter_var($request->email, FILTER_VALIDATE_EMAIL)) { $checkUser = User::where([ 'email_hash' => $emailHash, 'deleted_at' => Constant::NULL ])->first(); } else { $checkUser = User::where([ 'mobile' => $request->email, 'country_code' => $request->country_code, 'deleted_at' => Constant::NULL ])->first(); } //To send the verification code to the unverified user if (!empty($checkUser)) { //Remove confirmation code removeUserMetaValue($checkUser->id, 'confirmation_code'); $otp = generateOtp(); $dataConfirmationCode['user_id'] = $checkUser->id; $dataConfirmationCode['meta_key'] = 'confirmation_code'; $dataConfirmationCode['meta_value'] = bcrypt($otp); $dataRegister['user_id'] = $checkUser->id; $dataRegister['meta_key'] = 'registered_from'; $dataRegister['meta_value'] = 'Mobile'; $dataRegisterOs['user_id'] = $checkUser->id; $dataRegisterOs['meta_key'] = 'registered_os'; $dataRegisterOs['meta_value'] = 'Android'; $dataRegisterWith['user_id'] = $checkUser->id; $dataRegisterWith['meta_key'] = 'registered_with'; $dataRegisterWith['meta_value'] = 'Normal'; //Adding details to user meta addUserMultipleMetaValue([$dataRegister, $dataRegisterOs, $dataRegisterWith]); //event for sending mail of email verification // event(new \App\Events\Frontend\Auth\UserConfirmation($checkUser, $otp)); $response['status'] = Constant::CODE_403; $response['message'] = trans('auth.contact_exists'); $this->setStatusCode($response['status']); return $this->respond($response); } if ($verified == Constant::STATUS_ONE) { $response = $this->userRepo->createUser($request->all(), $emailHash); } else { $response['status'] = Constant::CODE_200; $response['message'] = trans('auth.register_success'); } $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @param object $request * @return array */ public function confirmOtp(Request $request) { $response = []; try { $validation = Validator::make($request->all(), [ 'email' => 'required', 'otp' => 'required', ]); if ($validation->fails()) { return $this->throwValidation($validation->messages()->first()); } $response = $this->userRepo->confirmOtp($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $response['success'] = Constant::STATUS_FALSE; $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @param object $request * @return array */ public function resendOtp(Request $request) { $response = []; try { $validation = Validator::make($request->all(), [ 'email' => 'required', ]); if ($validation->fails()) { return $this->throwValidation($validation->messages()->first()); } $response = $this->userRepo->resendOtp($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $response['success'] = Constant::STATUS_FALSE; $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @param Request $request * @return JsonResponse * * Social Login User * */ public function socialLogin(Request $request) { $response = []; try { $validation = Validator::make($request->all(), [ 'provider' => 'required', 'id' => 'required', 'email' => 'required|email|unique:users,email,null,id,deleted_at,null', 'name' => 'required', ]); if ($validation->fails()) { return $this->throwValidation($validation->messages()->first()); } $response = $this->userRepo->findOrCreateSocial($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @return array */ public function setPassword(SetPasswordRequest $request) { $response = []; try{ $response = $this->userRepo->setPassword($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $response['success'] = Constant::STATUS_FALSE; $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } /** * @return array */ public function userExist(Request $request) { $response = []; try{ $response = $this->userRepo->userExist($request->all()); $this->setStatusCode($response['status']); } catch (\Exception $ex) { $response['message'] = $ex->getMessage(); $response['success'] = Constant::STATUS_FALSE; $this->setStatusCode(Constant::CODE_403); } return $this->respond($response); } }