data['settings'] = Settings::find(1); $this->data['seo'] = Seo::where('page','signup')->first(); return view('front.register',$this->data); } /* | Signin / Login |-------------------------------------------------------------------------- */ public function signinPage() { $this->data['settings'] = Settings::find(1); $this->data['seo'] = Seo::where('page','signin')->first(); return view('front.login',$this->data); } /* | Save Register |-------------------------------------------------------------------------- */ public function saveSignup(Request $request) { $validator = Validator::make($request->all(), [ 'name'=>'required', 'email'=>'email|required|unique:customers', 'phone_number'=>'required|numeric', 'password'=>'required|min:6', 'address'=>'required', 'dob'=>'required', ]); if ($validator->fails()) { return response()->json([ 'status' => 0, 'msg' => $validator->messages() ]); }else{ $token = Hash::make(mt_rand(100000,999999)); $mobile_number = $request->phone_number; $create = new Customers; $create->name = $request->name; $create->email = $request->email; $create->mobile_number = $mobile_number; $create->password = Hash::make($request->password); $create->address = $request->address; $create->dob = $request->dob; $create->status = '1'; $create->remember_token = $token; $create->platform = 'web'; $create->created_at = date("Y-m-d H:i:s"); $create->save(); //Loyalty Points if (config('app.mod_loyalty') == true) { $lp = \App\LoyaltyPoints::first(); if($lp && !empty($lp)){ if($lp->enabled_points == 1 && $lp->points_signup != ''){ $lpc = new \App\LoyaltyPointsCustomers; $lpc->customer_id = $create->id; $lpc->customer_name = $create->name; $lpc->customer_email = $create->email; $lpc->total_points = $lp->points_signup; $lpc->save(); Helper::loyalty_points_log($create->id, $create->name,'points gained by sign up','loyalty',$lp->points_signup); } } } try { // Welcome Email Mail::to($request->email)->queue(new Welcome($request->all())); } catch (\Exception $e) { return response()->json(array('status' => 1, 'msg' => 'Registered Successfully.')); } return response()->json(array('status' => 1, 'msg' => 'Registered Successfully.')); } } /* | Login / Authenticate |-------------------------------------------------------------------------- */ public function authenticate(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required', 'password' => 'required' ]); if ($validator->fails()) { if($request->from && $request->from != ''){ return redirect()->route('signinPage',['from'=>$request->from])->withErrors($validator)->withInput(); }else{ return back()->withErrors($validator)->withInput(); } }else{ if (Auth::guard('customer')->attempt([ 'email' => strtolower(trim($request->email)), 'password' => $request->password, ])){ $customer = Auth::guard('customer')->user(); if($customer->status == 0){ Auth::guard('customer')->logout(); session()->flash('error','You must be active to login.'); return back(); } if($request->from && $request->from != ''){ return redirect()->route('foodMenu'); }else{ return redirect('/'); } }else{ $request->session()->flash("error", "Invalid Login Email or Password"); return back(); } } } /* | LogOut |-------------------------------------------------------------------------- */ public function logoutCustomer() { Auth::guard('customer')->logout(); return redirect()->route('home'); } /* | Verify Email |-------------------------------------------------------------------------- */ public function verifyEmail(Request $request) { if (!$request->has('token')) { return redirect()->route('home'); } $response = Customers::where('remember_token',$request->token)->get(); if($response){ DB::table('customers')->where('remember_token', $request->token)->update(['status' => 1]); $request->session()->flash('success', 'Your Email has been verified! You can login now, Thanks'); return view('front.verifyemail'); }else{ $request->session()->flash('error', 'Token Mismatch! Please try again'); return view('front.verifyemail'); } $request->session()->flash('error', 'Token Mismatch! Please try again outer'); return view('front.verifyemail'); } /* | forgot_password_page |-------------------------------------------------------------------------- */ public function forgotPasswordPage() { $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Forgot Password - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => 'Forgot Password' ); return view('front.forgot_password', $this->data); } /* | forgot_password |-------------------------------------------------------------------------- */ public function forgotPasswordCheck(Request $request) { $customer = Customers::where('email',$request->email)->first(); if (empty($customer)) { $request->session()->flash('error', 'Email not found! Please try again'); return back(); }else{ $verification_code = random_int(100000, 999999);; $customer->verification_code = $verification_code; $customer->save(); $email_data = array( 'verification_code' =>$verification_code ); try { Mail::to($customer->email)->queue(new ResetPassword($verification_code)); } catch (Exception $e) { $request->session()->flash('error', 'Server Error! Please try again'); return redirect()->route('forgot-password'); } return redirect('forgot-password-verification/'.Crypt::encrypt($customer->id)); } } /* | forgot_password_verification_page |-------------------------------------------------------------------------- */ public function forgotPasswordVerificationPage(Request $request) { if(!$request->segment(2)){ return redirect()->route('forgotPassword'); } $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Forgot Password Verification - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => 'Forgot Password verification' ); return view('front.forgot_password_verification', $this->data); } /* | forgot_password_verification_check |-------------------------------------------------------------------------- */ public function forgotPasswordVerificationCheck(Request $request) { $customer_id = Crypt::decrypt($request->id); $customer = Customers::where('id',$customer_id)->first(); if(empty($customer)){ $request->session()->flash('error', 'Server Error! Please try again'); return redirect()->route('forgotPassword'); } if($customer->verification_code != $request->verification_code){ $request->session()->flash('error', 'Invalid verification code! Please try again'); return back(); }else{ return redirect('reset-password/'.$request->id); } } /* | reset_password_page |-------------------------------------------------------------------------- */ public function resetPasswordPage(Request $request) { if(!$request->segment(2)){ return redirect()->route('forgotPassword'); } $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Reset Password - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => 'Reset your password' ); return view('front.reset_password', $this->data); } /* | new_password |-------------------------------------------------------------------------- */ public function newPassword(Request $request) { $validator = Validator::make($request->all(), [ 'password' => 'required|confirmed|min:6' ]); if ($validator->fails()) { return back()->withErrors($validator)->withInput(); } $customer_id = Crypt::decrypt($request->id); $customer = Customers::where('id',$customer_id)->first(); if(empty($customer)){ $request->session()->flash('error', 'Server Error! Please try again'); return redirect()->route('forgotPassword'); } $customer->password = Hash::make($request->password); $customer->verification_code = NULL; $customer->save(); $request->session()->flash('success', 'Your password is reset successfully.'); return redirect()->route('signinPage'); } }