ria/app/Controllers/Login.php
2024-06-12 03:14:50 +00:00

171 lines
5.1 KiB
PHP

<?php
namespace App\Controllers;
use App\Models\Login_model;
/**
* Class : Login (LoginController)
* Login class to control to authenticate user credentials and starts user's session.
* @author : Kishor
* @version : 1.1
* @since : 15 November 2016
* @example : Revised at 15th april 2024
*/
class Login extends BaseController
{
protected $login_model;
protected $session;
/**
* This is default constructor of the class
*/
public function __construct()
{
parent::__construct();
$this->login_model = new Login_model();
}
/**
* Index Page for this controller.
*/
public function index()
{
$isLoggedIn = session()->get('isLoggedIn');
if (!isset($isLoggedIn) || $isLoggedIn != TRUE) {
return view('login');
} else {
// redirect('/dashboard');
return redirect()->to('/dashboard');
}
}
/**
* This function used to check the user is logged in or not
*/
function isLoggedIn()
{
$isLoggedIn = session()->get('isLoggedIn');
if (!isset($isLoggedIn) || $isLoggedIn != TRUE) {
return view('login');
} else {
// return view('login');
return redirect()->to('/dashboard');
}
}
/**
* This function used to logged in user
*/
public function loginMe()
{
// return redirect()->to(site_url('/dashboard'));
helper(['form', 'url']);
$validationRules = [
'password' => 'required|max_length[32]'
];
if (!$this->validate($validationRules)) {
return redirect()->to(site_url('login'))->withInput();
}
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
$result = $this->login_model->loginMe($email, $password);
if (!empty($result)) {
foreach ($result as $res) {
log_message('error', '#####loggin_name : ' . $res->FirstName);
$sessionData = [
'userId' => $res->userId,
'role' => $res->roleId,
'roleText' => $res->role,
'name' => $res->FirstName,
'Designation' => $res->Designation,
'DEPCode' => $res->DEPCode,
'HeadDept' => $res->HeadDept,
'depaccess' => $this->login_model->Accessdep($res->EmpID),
'DepartmentName' => $res->DepartmentName,
'EmpID' => $res->EmpID,
'ProfilePic' => $res->ProfilePic,
'CompanyName' => $res->CompanyName,
'isLoggedIn' => true
];
session()->set($sessionData);
$role = $res->roleId;
$designation = $res->Designation;
$DEPCode = $res->DEPCode;
if ($DEPCode == SECURITY) {
return redirect()->to(site_url('/Addigr'));
} else {
return redirect()->to(site_url('/dashboard'));
}
}
} else {
session()->setFlashdata('error', 'Email or password mismatch');
return redirect()->to(site_url('login'));
}
}
/**
* This function used to load forgot password view
*/
function forgotPassword()
{
view('forgotPassword');
}
/**
* To reset password of the user (without one time code)
*/
public function resetPasswordUser()
{
$mobileno = $this->request->getPost('phno');
$emailid = $this->request->getPost('email');
$result = $this->login_model->getuserid($mobileno, $emailid);
if (!empty($result)) {
$string = "abcde" . rand(100000, 999999) . "lmnxyz";
$string_shuffled = str_shuffle($string);
$passcode = substr($string_shuffled, 1, 6);
$password = "RESICO@" . $passcode;
$mobile = "91" . $result[0]->ContactNumber;
$msg = "Hi " . $result[0]->FirstName . ",
\n Your password has been reset successfully.
\n Please login with your new password '" . $password . "'";
$message = urlencode($msg);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://smsapi.24x7sms.com/api_2.0/SendSMS.aspx?APIKEY=xegCdYUIMf3&MobileNo=" . $mobile . "&SenderID=VNBAIT&Message=" . $message . "&ServiceName=PROMOTIONAL_HIGH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
curl_close($ch);
$resetpassword = password_hash($password, PASSWORD_DEFAULT);
$updatepassword = $this->login_model->updatepassword($result[0]->userId, $resetpassword);
session()->setFlashdata('success', 'Password sent successfully. Please check your mobile.');
return redirect()->to('/loginMe');
} else {
session()->setFlashdata('error', 'This Mobile Number is not registered with us.');
return redirect()->to('/loginMe');
}
}
}