Files
freeu-project/app/Http/Controllers/Admin/AdminLoginController.php

214 lines
6.9 KiB
PHP
Raw Normal View History

2024-03-28 14:52:40 +05:30
<?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!"
]
);
}
}
}