solving freedcamp issues and bugs

This commit is contained in:
Ritikesh yadav
2024-04-15 19:18:22 +05:30
parent 2953c72796
commit 3f6b3aecad
7 changed files with 332 additions and 198 deletions

View File

@@ -149,13 +149,19 @@ class AdminLoginController extends Controller
public function sendMailPage(Request $request)
{
if (!$request->hasValidSignature()) {
abort(403);
}
// if (!$request->hasValidSignature()) {
// abort(403);
// return response()->json([
// 'status'=>403,
// 'message'=>'Page expire !',
// ]);
// }
$expirePage = !$request->hasValidSignature();
// dd($expirePage);
// $email = 'example@gmail.com';
// $email = $request->email;
$email = Session()->get('email_send');
return view('Admin.Pages.manage_sub_admin.reset-password', compact('email'));
return view('Admin.Pages.manage_sub_admin.reset-password', compact('email','expirePage'));
}
public function updatePassword(Request $request)

View File

@@ -466,7 +466,10 @@ class AuthController extends Controller
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage], 400);
}
if(strlen($request->otp) < 4)
{
return response()->json(['status' => 401, 'message' => 'Please enter 4 digit OTP']);
}
$otp = (int) $request->otp;
if (Session::has('user-registration')) {
// $user = Session::get('user-registration');
@@ -915,7 +918,10 @@ class AuthController extends Controller
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage], 400);
}
if(strlen($request->otp) < 4)
{
return response()->json(['status' => 401, 'message' => 'Please enter 4 digit OTP']);
}
$otp = (int) $request->otp;
if (Session::has('user-registration')) {
$userDetails = Session::get('user-registration');

View File

@@ -344,6 +344,39 @@ class LoginController extends Controller
}
}
// resend otp for forgot password
public function resendOtp()
{
// dd('hello');
$email_mobile = Session::get('phone_email_forgot');
$loginWith = filter_var($email_mobile, FILTER_VALIDATE_EMAIL) ? 'email' : 'contact_number';
if($loginWith == 'contact_number')
{
// $otp = rand(0000,9999);
$otp = $this->otpGenerate($email_mobile);
$this->thirdPartyOTP($email_mobile,$otp);
User::where('contact_number',$email_mobile)->update([
'otp' => $otp,
'expire_at' => Carbon::now('Asia/colombo')->addMinutes(2)
]);
}else{
$otp = $this->otpGenerate($email_mobile);
$mailData = [
'title' => 'Mail from Jerichoalternatives.in',
'body' => 'This is for testing email using smtp.'
];
// $otp = $this->otpGenerate($request->email);
Mail::to($email_mobile)->send(new OtpMail($mailData, $otp));
User::where('email',$email_mobile)->update([
'otp' => $otp,
'expire_at' => Carbon::now('Asia/colombo')->addMinutes(2)
]);
}
return response()->json(['status'=>200,'message'=>'OTP has been send to your email or phone']);
}
// resend otp while login
public function request_otp(Request $request)
{

View File

@@ -2,164 +2,174 @@
@section('content')
<!--end::Head-->
<!--begin::Body-->
<body data-kt-name="metronic" id="kt_body" class="app-blank app-blank bgi-size-cover bgi-position-center bgi-no-repeat">
<!--begin::Theme mode setup on page load-->
<!--begin::Root-->
<div class="d-flex flex-root bgs align-items-center" id="kt_app_root">
<!--begin::Authentication - Sign-in -->
<div class="row w-100">
<!--begin::Body-->
<div class="col-md-12">
<!--begin::Wrapper-->
<div class="bg-body d-flex flex-center rounded-4 p-10">
<!--begin::Content-->
<div class="w-md-400px">
<!--begin::Form-->
<form class="form w-100" id="update_password" method="POST">
@csrf
<!--begin::Heading-->
<div class="text-center mb-11">
<!--begin::Title-->
<h1 class="text-dark fw-bolder mb-3">Create New Password</h1>
<!--end::Title-->
<!--begin::Subtitle-->
{{-- <div class="text-gray-800 fw-semibold fs-5">En</div> --}}
<!-- <div class="text-gray-500 fw-semibold fs-7">Login Through</div> -->
<!--begin::Theme mode setup on page load-->
<!--begin::Root-->
<div class="d-flex flex-root bgs align-items-center" id="kt_app_root">
<!--begin::Authentication - Sign-in -->
<div class="row w-100">
<!--begin::Body-->
@if(!$expirePage)
<div class="col-md-12">
<!--begin::Wrapper-->
<div class="bg-body d-flex flex-center rounded-4 p-10">
<!--begin::Content-->
<div class="w-md-400px">
<!--begin::Form-->
<form class="form w-100" id="update_password" method="POST">
@csrf
<!--begin::Heading-->
<div class="text-center mb-11">
<!--begin::Title-->
<h1 class="text-dark fw-bolder mb-3">Create New Password</h1>
<!--end::Title-->
<!--begin::Subtitle-->
{{-- <div class="text-gray-800 fw-semibold fs-5">En</div> --}}
<!-- <div class="text-gray-500 fw-semibold fs-7">Login Through</div> -->
<!--end::Subtitle=-->
</div>
<!--begin::Heading-->
<!--begin::Input group=-->
<div class="fv-row mb-8">
<!--begin::Email-->
<input type="hidden" name="email" value="{{$email}}" autocomplete="off" class="form-control bg-transparent" />
<!--end::Email-->
</div>
<!--end::Input group=-->
<div class="fv-row mb-3">
<!--begin::Password-->
<input type="password" placeholder="Password" name="password" autocomplete="off" class="form-control bg-transparent" />
<!--end::Password-->
</div>
<!--end::Subtitle=-->
</div>
<!--begin::Heading-->
<!--begin::Input group=-->
<div class="fv-row mb-8">
<!--begin::Email-->
<input type="hidden" name="email" value="{{ $email }}" autocomplete="off"
class="form-control bg-transparent" />
<!--end::Email-->
</div>
<!--end::Input group=-->
<div class="fv-row mb-3">
<!--begin::Password-->
<input type="password" placeholder="Confirm Password" name="confirm_password" autocomplete="off" class="form-control bg-transparent" />
<!--end::Password-->
</div>
<!--end::Input group=-->
<!--begin::Submit button-->
<div class="d-grid mt-15 mb-10 text-center">
{{--<a href="./otp.php" class=" btn btn-primary">
<span class="indicator-label">Sign In</span>
</a>--}}
<button type="submit" class="btn btn-primary">
<span class="indicator-label update_btn">Update</span>
</button>
</div>
<div class="alert d-none" role="alert" id="result">
<strong id="message"></strong>
</div>
<!--end::Submit button-->
<!--begin::Sign up-->
<div class="text-gray-500 text-center fw-semibold fs-6 d-none">Reset Mail has been send on your mail</div>
<!--end::Sign up-->
</form>
<!--end::Form-->
</div>
<!--end::Content-->
</div>
<!--end::Wrapper-->
<!--begin::Password-->
<input type="password" placeholder="Password" name="password" autocomplete="off"
class="form-control bg-transparent" />
<!--end::Password-->
</div>
<div class="fv-row mb-3">
<!--begin::Password-->
<input type="password" placeholder="Confirm Password" name="confirm_password"
autocomplete="off" class="form-control bg-transparent" />
<!--end::Password-->
</div>
<!--end::Input group=-->
<!--begin::Submit button-->
<div class="d-grid mt-15 mb-10 text-center">
{{-- <a href="./otp.php" class=" btn btn-primary">
<span class="indicator-label">Sign In</span>
</a> --}}
<button type="submit" class="btn btn-primary">
<span class="indicator-label update_btn">Update</span>
</button>
</div>
<div class="alert d-none" role="alert" id="result">
<strong id="message"></strong>
</div>
<!--end::Submit button-->
<!--begin::Sign up-->
<div class="text-gray-500 text-center fw-semibold fs-6 d-none">Reset Mail has been send on
your mail</div>
<!--end::Sign up-->
</form>
<!--end::Form-->
</div>
<!--end::Content-->
</div>
<!--end::Wrapper-->
</div>
@else
<div class="col-md-12 text-center">
<h1>Page has Expired</h1>
</div>
<!--end::Body-->
<!--begin::Aside-->
{{-- <div class="col-md-6">
<!--begin::Content-->
<div class="d-flex flex-column flex-center pb-0 pb-lg-10 p-10 w-100">
<!--begin::Image-->
<img class="theme-light-show mx-auto mw-100 w-150px w-lg-300px mb-10 mb-lg-20" src="../../assets/media/auth/agency.png" alt="" />
<img class="theme-dark-show mx-auto mw-100 w-150px w-lg-300px mb-10 mb-lg-20" src="../../assets/media/auth/agency-dark.png" alt="" />
<!--end::Image-->
</div>
<!--end::Content-->
</div> --}}
<!--begin::Aside-->
</div>
<!--end::Authentication - Sign-in-->
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function (){
$.validator.addMethod("StrongPassword",function (value) {
return /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/.test(
value
);
},
"Password Must Contain <br> 8 characters <br> At least 1 uppercase letter and symbol <br> Has a number"
);
@endif
<!--end::Body-->
<!--begin::Aside-->
{{-- <div class="col-md-6">
<!--begin::Content-->
<div class="d-flex flex-column flex-center pb-0 pb-lg-10 p-10 w-100">
<!--begin::Image-->
<img class="theme-light-show mx-auto mw-100 w-150px w-lg-300px mb-10 mb-lg-20" src="../../assets/media/auth/agency.png" alt="" />
<img class="theme-dark-show mx-auto mw-100 w-150px w-lg-300px mb-10 mb-lg-20" src="../../assets/media/auth/agency-dark.png" alt="" />
<!--end::Image-->
</div>
<!--end::Content-->
</div> --}}
<!--begin::Aside-->
</div>
<!--end::Authentication - Sign-in-->
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function() {
$.validator.addMethod("StrongPassword", function(value) {
return /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/.test(
value
);
},
"Password Must Contain <br> 8 characters <br> At least 1 uppercase letter and symbol <br> Has a number"
);
$("#update_password").validate({
ignore: [],
debug: false,
rules: {
email: {
required: true,
},
password: {
required: true,
StrongPassword: true,
},
confirm_password: {
required: true,
// equalTo: '#password',
},
},
messages: {
email: {
required: "Please enter a valid email",
},
password: {
required: "This field is required",
},
confirm_password: {
required: "This field is required",
// equalTo: "Password not matched",
},
},
submitHandler: function (form) {
var formData = new FormData(form);
// $('.update_btn').prop('disabled',true);
// $('.update_btn').html('Wait');
$.ajax({
url: "{{route('admin.update-password')}}",
type: "POST",
data: formData,
processData: false,
contentType: false,
dataType: "json",
success: function (result) {
if (result.status == 200) {
$('#result').removeClass('d-none alert-warning');
$('#result').addClass('alert-success');
$('#message').html(result.message);
setTimeout(function(){
$('#result').addClass('d-none');
window.location.href="{{route('admin.login')}}";
},5000);
}
else{
$('#result').removeClass('d-none alert-success');
$('#result').addClass('alert-warning');
$('#message').html(result.message);
setTimeout(function(){
$('#result').addClass('d-none');
},5000);
}
},
});
},
});
});
</script>
@endsection
$("#update_password").validate({
ignore: [],
debug: false,
rules: {
email: {
required: true,
},
password: {
required: true,
StrongPassword: true,
},
confirm_password: {
required: true,
// equalTo: '#password',
},
},
messages: {
email: {
required: "Please enter a valid email",
},
password: {
required: "This field is required",
},
confirm_password: {
required: "This field is required",
// equalTo: "Password not matched",
},
},
submitHandler: function(form) {
var formData = new FormData(form);
// $('.update_btn').prop('disabled',true);
// $('.update_btn').html('Wait');
$.ajax({
url: "{{ route('admin.update-password') }}",
type: "POST",
data: formData,
processData: false,
contentType: false,
dataType: "json",
success: function(result) {
if (result.status == 200) {
$('#result').removeClass('d-none alert-warning');
$('#result').addClass('alert-success');
$('#message').html(result.message);
setTimeout(function() {
$('#result').addClass('d-none');
window.location.href =
"{{ route('admin.login') }}";
}, 5000);
} else {
$('#result').removeClass('d-none alert-success');
$('#result').addClass('alert-warning');
$('#message').html(result.message);
setTimeout(function() {
$('#result').addClass('d-none');
}, 5000);
}
},
});
},
});
});
</script>
@endsection

View File

@@ -1,4 +1,4 @@
<?php $currentPage = "forgot-password" ?>
<?php $currentPage = 'forgot-password'; ?>
@extends('Frontend.layouts.master')
@@ -6,66 +6,144 @@
@section('content')
<div class="login">
<div class="login">
<div class="container row m-auto d-flex align-items-center justify-content-center">
<div class="container row m-auto d-flex align-items-center justify-content-center">
<!--<div class="col-md-6 left" data-aos="fade-right">-->
<!--<div class="col-md-6 left" data-aos="fade-right">-->
<!-- <img src="{{ asset('public/assets/media/FrontendImages/reset_password_image.png') }}" width="100%">-->
<!-- <img src="{{asset('public/assets/media/FrontendImages/reset_password_image.png')}}" width="100%">-->
<!--</div>-->
<!--</div>-->
<div class="col-md-6 right" data-aos="fade-left">
<div class="col-md-6 right" data-aos="fade-left">
<form id="change_password" autocomplete="off">
<form id="change_password" autocomplete="off">
<div class="lg-password login-form">
<div class="lg-password login-form">
<h1>Reset Your Password</h1>
<h1>Reset Your Password</h1>
<input type="hidden" id="user_id" name="user_id" value="{{ Request::get('user_id') }}">
<input type="hidden" id="user_id" name="user_id" value="{{Request::get('user_id')}}">
<div class="form-group">
<div class="form-group">
<label>Enter the OTP sent to registered mobile number or email</label>
<label>Enter the OTP sent to registered mobile number or email</label>
<input name="otp" id="otp" class="form-control" maxlength="4" type="tel" />
<input name="otp" id="otp" class="form-control" maxlength="4" type="tel"/>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label>New Password</label>
<label>New Password</label>
<input name="password" id="password" class="form-control" type="password" />
<input name="password" id="password" class="form-control" type="password"/>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label>Confirm Password</label>
<label>Confirm Password</label>
<input name="password_confirmation" class="form-control" type="password" />
<input name="password_confirmation" class="form-control" type="password"/>
</div>
<p class="text-white">OTP valid for <span id="countdown-timers"></span> sec</p>
<p class="regist">Didn't receive any otp? <a href="#"
id="resend_forget_otp" class="d-none">Resend OTP</a></p>
<button type="submit" class="yellow-btn signin">Update</button>
</div>
</form>
</div>
<p class="text-white">OTP valid for <span id="countdown-timer"></span> sec</p>
<button type="submit" class="yellow-btn signin">Update</button>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function() {
// var data = $('#user_id').val()
// console.log(data);
$('#resend_forget_otp').on('click', function(event) {
event.preventDefault();
</div>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: 'api/resend/forget/password/otp',
type: 'POST',
// data: {
// 'user_id': data,
// },
@endsection
success: function(response) {
if (response.status == 200) {
$('#resend_forget_otp').addClass("d-none");
startTimer();
setTimeout(() => {
toastr.success(response.message);
}, 2000);
// swal("Thankyou!", "OTP has been sent to your mail and phone",
// "success");
location.reload();
}
},
});
});
var timerDuration = 10;
var duration = 10;
function startTimer() {
// var duration = 120; // Duration of the timer in seconds
var timer = duration;
$("#countdown-timers").text(formatTime(timer));
var intervalId = setInterval(function() {
timer--;
$("#countdown-timers").text(formatTime(timer));
if (timer === 0) {
clearInterval(intervalId);
$('#resend_forget_otp').removeClass("d-none");
$("#resend-otp-link").prop("disabled", false);
}
}, 1000);
}
function formatTime(seconds) {
var minutes = Math.floor(seconds / 60);
var remainingSeconds = seconds % 60;
return (
minutes + ":" + (remainingSeconds < 10 ? "0" : "") + remainingSeconds
);
}
startTimer();
});
</script>
@endsection

View File

@@ -31,7 +31,7 @@
</div>
<div class="form-group mb-3">
<label>Mobile Number</label>
<input name="contact_number" id="contact_number" class="form-control" placeholder="Enter your phone number" type="number" />
<input name="contact_number" id="contact_number" class="form-control" placeholder="Enter your phone number" type="tel" onkeydown="return /^[0-9]+$/i.test(event.key)"/>
</div>
<div class="form-group mb-3">
<label>Password</label>
@@ -56,7 +56,7 @@
</div>
<div class="form-group mb-3">
<label>Authorized Representative Name</label>
<input class="form-control" type="text" name="authorized_representative_name" placeholder="Enter authorized representative name" />
<input class="form-control" type="text" name="authorized_representative_name" placeholder="Enter authorized representative name" onkeydown="return /^[a-zA-Z\s]+$/i.test(event.key)" />
</div>
<div class="form-group mb-3">
<label>Email Address</label>
@@ -64,7 +64,7 @@
</div>
<div class="form-group mb-3">
<label>Mobile Number</label>
<input name="contact_number2" id="contact_number2" class="form-control" placeholder="Enter your phone number" type="number" />
<input name="contact_number2" id="contact_number2" class="form-control" placeholder="Enter your phone number" type="tel" onkeydown="return /^[0-9]+$/i.test(event.key)" />
</div>
<div class="form-group mb-3">
<label>Password</label>

View File

@@ -127,6 +127,7 @@ Route::post('resend_otp', [RegistrationController::class, 'request_otp']);
Route::post('login/email', [LoginController::class, 'loginByEmail'])->name('user-login-email');
Route::post('verify/mobile/otp', [LoginController::class, 'verify_mobile_otp']);
Route::post('forget/password', [LoginController::class, 'forget_password']);
Route::post('resend/forget/password/otp', [LoginController::class, 'resendOtp'])->name('resend-forget-password-otp');
Route::post('verify/password/otp', [LoginController::class, 'verify_reset_password_otp']);
Route::post('update/password', [LoginController::class, 'update_password']);
Route::post('request_callback', [WebsiteLeadsController::class, 'leads']);