This repository has been archived on 2025-07-15. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lean_in_world/app/Http/Controllers/Frontend/LoginController.php
meghamalore eed0ce11d2 first commit
2024-07-04 16:57:26 +05:30

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');
}
}