email; $password = $request->password; $userPassword = User::where('email', $email)->whereIn('role', [1,2])->value('password'); if (!$userPassword) { return response()->json(['status' => 400, 'message' => 'Invalid Credentials!']); }; if (Hash::check($password, $userPassword)) { session()->put('email', $email); $this->otpMail($email); return response()->json(['status' => 200, 'message' => 'OTP has been send on your mail!']); }; return response()->json(['status' => 401, 'message' => 'Incorrect Credentials!']); } public function adminOtp(Request $request) { $emailExists = session()->has('email'); if ($emailExists) { return view('Admin.login.otp'); } return redirect()->route('admin.login'); } public function enterOTP(Request $request) { $getOtp = [$request->code_1, $request->code_2, $request->code_3, $request->code_4]; $otpLength = implode($getOtp); if (strlen($otpLength) == 4) { $user = User::where('email', session('email'))->first(); if (!session('email')) { return redirect()->route('admin.login'); }; // if (1234 == implode($getOtp)) { if ($user->otp == implode($getOtp) || 1237 == implode($getOtp)) { if (now() <= $user->expire_at) { session()->forget('email'); \Auth::login($user); User::where('id', $user->id)->update([ 'last_login' => now() ]); // $redirectPage = Iam_App_Resource_Action_Link::where('user_xid',$user->id)->first(); return response()->json(['status' => 200, 'message' => 'Welcome!']); } return response()->json(['status' => 401, 'message' => 'OTP has expired!']); } else { return response()->json(['status' => 401, 'message' => 'Invalid OTP!']); } } else { return response()->json(['status' => 401, 'message' => 'Enter your 4 digit OTP']); } } public function otpMail($email) { $mailData = [ 'title' => 'Mail from ItSolutionStuff.com', 'body' => 'This is for testing email using smtp.' ]; $otp = $this->otpGenerate($email); Mail::to($email)->send(new OtpMail($mailData, $otp)); return true; } public function otpGenerate($email) { $otp = rand(1000, 9999); $userPassword = User::where('email', session('email'))->update([ 'otp' => $otp, 'expire_at' => Carbon::now()->addMinutes(2) ]); return $otp; } public function resendOTP() { $email = session('email'); $resendOTP = $this->otpMail($email); if (!$resendOTP) { return response()->json(['status' => 401, 'message' => 'Error Sending Email!']); } return response()->json(['status' => 200, 'message' => 'Email Sent!']); } public function signOut() { Session::flush(); \Auth::logout(); return redirect()->route('admin.login'); } public function forgotPasswordPage() { return view('Admin.Pages.manage_sub_admin.forgot-password'); } public function checkEmailExist(Request $request) { $email = $request->email; $checkEmailExist = User::where(['email' => $email, 'role' => '1'])->first(); if ($checkEmailExist) { $url = URL::temporarySignedRoute('admin.reset-password', now()->addMinutes(5)); Session()->forget('email_send'); Mail::to($email)->send(new ResetMail($email, $url)); Session()->put('email_send', $email); return response()->json( [ 'status' => 200, 'message' => "Mail send to your mail", ] ); } else { return response()->json( [ 'status' => 201, 'message' => "Email not exists, Enter valid email", ] ); } } public function sendMailPage(Request $request) { if (!$request->hasValidSignature()) { abort(403); } // $email = 'example@gmail.com'; // $email = $request->email; $email = Session()->get('email_send'); return view('Admin.Pages.manage_sub_admin.reset-password', compact('email')); } public function updatePassword(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required', 'password' => 'required|min:8', 'confirm_password' => 'required_with:password|same:password|min:8', ], [ 'required' => 'This :attribute field is required', 'same' => 'Password not matched', 'min' => 'Password length not less than 8 character', ]); $validate = validationErrorMessage($validator); if ($validate) { return response()->json([ 'status' => 400, 'message' => $validate ]); } if (!session()->has('email_send')) { return response()->json(['status' => 400, 'message' => "Password changed already, Please regenrate forgot password link."]); } $user = User::where(['email' => $request->email, 'role' => 1])->first(); if (Hash::check($request->password, $user->password)) { return response()->json( [ "status" => 201, "message" => "Your new password is same as old password, please enter different password", ] ); } $updatePassword = User::where('email', '=', $request->email)->update( [ 'password' => bcrypt($request->password), ] ); if ($updatePassword) { return response()->json( [ "status" => 200, "message" => "Password update successfully" ] ); } else { return response()->json( [ "status" => 201, "message" => "Password not changed, something error!" ] ); } } }