214 lines
6.9 KiB
PHP
214 lines
6.9 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Admin;
|
||
|
|
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use Illuminate\Support\Facades\Hash;
|
||
|
|
use Illuminate\Support\Facades\Session;
|
||
|
|
use App\Models\User;
|
||
|
|
use Mail;
|
||
|
|
use App\Mail\OtpMail;
|
||
|
|
use Carbon\Carbon;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Facades\Validator;
|
||
|
|
use Illuminate\Support\Facades\URL;
|
||
|
|
use App\Mail\ResetMail;
|
||
|
|
|
||
|
|
class AdminLoginController extends Controller
|
||
|
|
{
|
||
|
|
public function index(Request $request)
|
||
|
|
{
|
||
|
|
return view('Admin.login.sign-in');
|
||
|
|
}
|
||
|
|
|
||
|
|
public function adminLogin(Request $request)
|
||
|
|
{
|
||
|
|
$email = $request->email;
|
||
|
|
$password = $request->password;
|
||
|
|
$userPassword = User::where(['email' => $email, 'role' => 1])->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()
|
||
|
|
]);
|
||
|
|
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!"
|
||
|
|
]
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|