Refactor two-factor authentication logic

Updated two-factor authentication to streamline the time format handling using `time()` instead of `DateTime`, reducing code complexity. Also fixed a potential bug in `MY_Model.php` by checking the query object before accessing `num_rows()`.
This commit is contained in:
2024-08-25 09:34:40 +02:00
parent f2c8449f48
commit cb53785ae6
2 changed files with 6 additions and 7 deletions
+5 -6
View File
@@ -134,8 +134,7 @@ class Login extends MY_Controller {
for ($i = 1; $i < 7; $i ++){
$code .= rand(1,9);
}
$dateTime = new DateTime();
$asString = $dateTime->format('Y-m-d H:i:s');
$asString = time();
$this->Users_model->update_record(['twofactorcode' =>$code, 'twofactortime'=>$asString ],$userID);
return $code;
@@ -146,7 +145,7 @@ class Login extends MY_Controller {
$tmpuserid = $this->session->userdata( 'tmpuserid' );
$code = $this->clean_input('code');
$hoe = $this->clean_input('hoe');
$user = $this->Users_model->get([],false,true);
$user = $this->Users_model->get($tmpuserid);
if ($hoe == "GOOGLE"){
$message = $this->checkTwoFactorGoogle($user, $code);
}
@@ -160,9 +159,9 @@ class Login extends MY_Controller {
function checkTwoFactorEmail($user,$code){
$message = false;
$now = strtotime('-10 minutes');
$test = strtotime($user->twofactortime);
if ($now > strtotime($user->twofactortime) )
$now = time() - (10 * 60);
$test = $user->twofactortime;
if ($now > $test )
$message = "U heeft te lang gewacht, de code is niet meer geldig.";
else
if ($user->twofactorcode !== $code) $message = "Code is incorrect.";
+1 -1
View File
@@ -176,7 +176,7 @@ class MY_Model extends CI_Model{
if ( $fieldname ) $this->db->select( $fieldname );
$query = $this->db->get( $this->tablename . ' AS T1' );
if ( $query->num_rows() == 0 ) return FALSE;
if ( ! $query || $query->num_rows() == 0 ) return FALSE;
if ( $row ){
$row = $query->row();