262 lines
9.1 KiB
PHP
262 lines
9.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Frontend;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Admin\program;
|
|
use App\Models\Admin\country;
|
|
use App\Models\Admin\ProgramCurrencyAmount;
|
|
use App\Models\Frontend\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Mail;
|
|
use App\Mail\Frontend\RegisterationMail;
|
|
use App\Mail\Frontend\PasswordResetMail;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Carbon\Carbon;
|
|
use GuzzleHttp\Client;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use AmrShawky\LaravelCurrency\Facade\Currency;
|
|
|
|
class LoginController extends Controller {
|
|
|
|
public function index() {
|
|
$get_program = program::all()->toArray();
|
|
$get_countries = country::all()->toArray();
|
|
return view('Frontend.Pages.Login.login')->with(['programs' => $get_program, 'get_country' => $get_countries]);
|
|
}
|
|
|
|
public function insert_user_data(Request $request) {
|
|
|
|
// Check if the email already exists in the database
|
|
$existingUser = User::where('email', $request->input('email_id'))->first();
|
|
|
|
if ($existingUser) {
|
|
return response()->json(['success' => false, 'status' => 400, 'message' => 'Email already exists. Please choose a different email']);
|
|
}
|
|
|
|
$user_data = new User;
|
|
$user_data->first_name = $request->input('first_name');
|
|
$user_data->last_name = $request->input('last_name');
|
|
$user_data->email = $request->input('email_id');
|
|
$user_data->password = Hash::make($request->input('password1'));
|
|
$user_data->phone_number = $request->input('phone_number');
|
|
$user_data->gender = $request->input('gender');
|
|
$user_data->date_of_birth = $request->input('date_of_birth');
|
|
$user_data->address_line1 = $request->input('address');
|
|
$user_data->city = $request->input('city');
|
|
$user_data->state = $request->input('state');
|
|
$user_data->country = $request->input('manual_countries');
|
|
$user_data->post_code = $request->input('zip_code');
|
|
|
|
$user_data->lang_level = $request->input('lang_level');
|
|
$user_data->hear_about_us = $request->input('hear_about');
|
|
$user_data->motivation_to_join_program = $request->input('describe');
|
|
$user_data->any_comment = $request->input('comment');
|
|
$user_data->save();
|
|
|
|
|
|
Mail::to($user_data->email)->send(new RegisterationMail($user_data));
|
|
|
|
$credetials = [
|
|
'email' => $request->input('email_id'),
|
|
'password' => $request->input('password'),
|
|
];
|
|
Auth::login($user_data);
|
|
// dd(auth()->user()->id);
|
|
$user_id = auth()->user()->id;
|
|
// if (Auth::login($user_data)) {
|
|
return response()->json(['success' => true, 'status' => 200,'user_id' => $user_id]);
|
|
// }
|
|
}
|
|
|
|
public function login_user(Request $request) {
|
|
$credetials = [
|
|
'email' => $request->email,
|
|
'password' => $request->password,
|
|
];
|
|
|
|
if (Auth::attempt($credetials)) {
|
|
return response()->json(['success' => true, 'status' => 200]);
|
|
} else {
|
|
return response()->json(['error' => 'Invalid Credentials', 'status' => 401]);
|
|
}
|
|
}
|
|
|
|
public function forgot_password() {
|
|
return view('Frontend.Pages.Login.forgot_password');
|
|
}
|
|
|
|
public function add_forgot_password(Request $request) {
|
|
|
|
$user = DB::table('iam_principal')->where('email', $request->email)->first();
|
|
|
|
if (!$user) {
|
|
return response()->json(['error' => 'Email not found.', 'status' => 404]);
|
|
}
|
|
|
|
$token = Str::random(64);
|
|
$expirationTime = now()->addMinutes(5);
|
|
|
|
$data = [
|
|
'email' => $request->email,
|
|
'token' => $token,
|
|
'expires_at' => $expirationTime,
|
|
'created_at' => Carbon::now(),
|
|
];
|
|
$user_token = DB::table('password_reset_tokens')->where('email', $request->email)->first();
|
|
if ($user_token) {
|
|
DB::table('password_reset_tokens')
|
|
->where('email', $request->email)
|
|
->update($data);
|
|
} else {
|
|
DB::table('password_reset_tokens')
|
|
->insert($data);
|
|
}
|
|
|
|
|
|
// Mail::send('Frontend.Templates.forgot_password', ['token' => $token], function($message) use ($request) {
|
|
// $message->to($request->email);
|
|
// $message->subject("Reset Password");
|
|
// });
|
|
// dd($data);
|
|
Mail::to($request->email)->send(new PasswordResetMail($data));
|
|
|
|
return response()->json(['success' => true, 'status' => 200]);
|
|
}
|
|
|
|
public function resend_link(Request $request) {
|
|
$token = Str::random(64);
|
|
$expirationTime = now()->addMinutes(5);
|
|
|
|
$data = [
|
|
'email' => $request->email,
|
|
'token' => $token,
|
|
'expires_at' => $expirationTime,
|
|
'created_at' => Carbon::now(),
|
|
];
|
|
|
|
$user_token = DB::table('password_reset_tokens')->where('email', $request->email)->first();
|
|
// dd($user_token);
|
|
if ($user_token) {
|
|
DB::table('password_reset_tokens')
|
|
->where('email', $request->email)
|
|
->update($data);
|
|
} else {
|
|
DB::table('password_reset_tokens')
|
|
->insert($data);
|
|
}
|
|
|
|
|
|
// Mail::send('Frontend.Templates.forgot_password', ['token' => $token], function($message) use ($request) {
|
|
// $message->to($request->email);
|
|
// $message->subject("Reset Password");
|
|
// });
|
|
Mail::to($request->email)->send(new PasswordResetMail($token));
|
|
|
|
return response()->json(['success' => true, 'status' => 200, 'message' => 'A new password reset link has been sent to your email.']);
|
|
}
|
|
|
|
public function change_password() {
|
|
return view('Frontend.Pages.Login.reset_new_password');
|
|
}
|
|
|
|
public function password_set($token) {
|
|
return view('Frontend.Pages.Login.set_password')->with(['token' => $token]);
|
|
}
|
|
|
|
public function confirm_forgot_password(Request $request) {
|
|
$updatePassword = DB::table('password_reset_tokens')
|
|
->where([
|
|
'email' => $request->email,
|
|
'token' => $request->token,
|
|
])
|
|
->first();
|
|
|
|
if (!$updatePassword) {
|
|
return response()->json(['status' => 401, 'message' => 'Invalid or expired token']);
|
|
}
|
|
|
|
// Check if the token has expired
|
|
if (Carbon::now()->diffInMinutes($updatePassword->expires_at) > 0) {
|
|
return response()->json(['status' => 401, 'message' => 'Token has expired']);
|
|
}
|
|
|
|
User::where('email', $request->email)
|
|
->update(['password' => Hash::make($request->password)]);
|
|
|
|
DB::table('password_reset_tokens')
|
|
->where(['email' => $request->email])
|
|
->delete();
|
|
|
|
return response()->json(['success' => true, 'status' => 200]);
|
|
}
|
|
|
|
public function page_check_email() {
|
|
return view('Frontend.Pages.Login.check_password_reset_mail');
|
|
}
|
|
|
|
public function success_password_reset() {
|
|
return view('Frontend.Pages.Login.success_password_reset');
|
|
}
|
|
|
|
public function get_programs(Request $request) {
|
|
$countryId = $request->input('country_id');
|
|
$programs = Program::where('country_xid', $countryId)->get();
|
|
return response()->json(['programs' => $programs]);
|
|
}
|
|
|
|
public function get_single_program_detail(Request $request) {
|
|
$programId = $request->input('program_id');
|
|
// Fetch the program details based on the selected program ID
|
|
$program = Program::find($programId);
|
|
return response()->json(['program' => $program]);
|
|
}
|
|
|
|
public function fetch_converted_amount(Request $request) {
|
|
$convert_to = $request->input('convert_to');
|
|
|
|
if ($convert_to == 1) {
|
|
$convert_name = 'USD';
|
|
} else if ($convert_to == 2) {
|
|
$convert_name = 'GBP';
|
|
} else {
|
|
$convert_name = 'EUR';
|
|
}
|
|
|
|
// $converted = Currency::convert()
|
|
// ->from('GBP')
|
|
// ->to($convert_name)
|
|
// ->amount(152.60)
|
|
// ->get();
|
|
|
|
$fromCurrency = 'GBP';
|
|
$gbp_price = 200;
|
|
$apiKey = config('services.exchangerates.api_key');
|
|
$baseUrl = 'https://api.apilayer.com/exchangerates_data_api/latest';
|
|
|
|
$client = new Client();
|
|
// $response = $client->get("{$baseUrl}?access_key={$apiKey}");
|
|
$response = \Http::get('https://api.freecurrencyapi.com/v1/latest?apikey=fca_live_IUpn22wjq5zhcvRqGix4k6FlOZKo9SOHSAobRtMd');
|
|
$data = json_decode($response->getBody(), true);
|
|
// echo "<pre>";
|
|
// print_r($data['data']);
|
|
// die;
|
|
|
|
$conversionRate = $data['data'][$convert_name] / $data['data'][$fromCurrency];
|
|
$convertedAmount = $gbp_price * $conversionRate;
|
|
|
|
return response()->json([
|
|
'converted_amount' => $convertedAmount
|
|
]);
|
|
}
|
|
|
|
public function logout() {
|
|
Auth::logout();
|
|
return redirect('/website_login');
|
|
}
|
|
|
|
}
|