nhance-enrollment/app/Controllers/LoginController.php

146 lines
5.0 KiB
PHP
Executable File

<?php
namespace App\Controllers;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Models\UserModel;
use App\Models\AuthHistoryModel;
use App\Libraries\AuthLogout;
class LoginController extends BaseController
{
public function index(){
// $session_data = ['isLoggedIn' => True ,'userid' => '25'];
// set_session_data($session_data);
// $isLoggedIn = check_session();
$isLoggedIn = check_session();
$hasCookie = check_cookie();
if ($isLoggedIn || $hasCookie) {
return redirect()->to(base_url('/dashboard/view'));
}
return view('login');
}
public function receiveGoogleOAuthResponse()
{
$UserModel = new UserModel();
// echo 'DONE';die();
if ($this->request->getGet('code')) {
$code = (string) $this->request->getGet('code');
log_message('error', 'Get OAuth Responce Code Sucessfully');
log_message('error', 'OAuthResponceCode : `'.$code.'`');
$value = googleOAuthLogin($this->request->getGet('code'));
// log_message('error', "OAuthResponceCode :" . json_encode($value));
if($value){
// print_r($value);//die;
$user = $UserModel->getUserByEmail($value->email);
if($user){
if($user->is_active !== '0'){
$user_team = $UserModel->getUserTeamsByUserID($user->id);
// dd($user_team);
session()->regenerate(true);
$session_data = [
'pre_isLoggedIn' => True ,
'pre_userid' => $user->id,
'pre_userData' => $user,
'pre_userProfile' => $value->picture,
'pre_user_team' => $user_team,
];
$path = getenv('cookie.Path');
$domain = getenv('cookie.Domain');
$https = getenv('ccokie.secure');
// setcookie('session_data', json_encode($session_data), time() + 12 * 60 * 60, $path, $domain, $https, true);
set_session_data($session_data);
// Bind session to device
set_session_data(['fingerprint' => generateFingerprint()]);
log_message('error', 'Set The UserId : `'. $user->id .'` in Session');
log_message('error', 'User Login Sucessfully');
$this->getUserDeviceInfo($user->id, 'NhanceUser');
return redirect()->to(base_url('/dashboard/view'));
}else{
log_message('error', 'User Not Active');
session()->setFlashdata('error', 'User Not Active');
return AuthLogout::logout();
}
}else{
log_message('error', 'User Not Registered');
session()->setFlashdata('error', 'User Not Registered');
return AuthLogout::logout();
}
}
}else{
return redirect()->to(base_url('login'));
}
}
public function initiateGoogleOAuth()
{
return googleOAuthLogin(false);
}
public function logout()
{
// $path = getenv('cookie.Path');
// session()->destroy();
// setcookie('session_data', '', time() - 3600, $path);
// return redirect()->to(base_url('login'));
// $path = getenv('cookie.Path');
// session()->destroy();
// // setcookie('session_data', '', time() - 3600, $path);
// $path = getenv('cookie.Path');
// $domain = getenv('cookie.Domain');
// $https = getenv('cookie.secure');
// setcookie('session_data',null, time() -3600, $path, $domain, $https, true);
// return redirect()->to(base_url('login'));
return AuthLogout::logout();
}
public function getUserDeviceInfo($userId, $type_of_user){
// Load the UserAgent library
$userAgent = $this->request->getUserAgent();
// Get the user's platform (e.g., Windows, Mac, Linux)
$platform = $userAgent->getPlatform();
// Get the user's browser (e.g., Chrome, Firefox, Safari)
$browser = $userAgent->getBrowser();
// Get the user's IP address
$ipAddress = $this->request->getIPAddress();
$datd = [
'user_id' => $userId,
'user_type' => $type_of_user,
'ip' => $ipAddress,
'platform' => $platform,
'broswer' => $browser,
];
// print_r($datd);
// die();
$AuthHistoryModel = new AuthHistoryModel;
$insertAuthHistory = $AuthHistoryModel->insert($datd);
return $datd;
}
}