From 2cc9568fcff91f3b82f0c04cd7cb1fa835913d04 Mon Sep 17 00:00:00 2001 From: Palle Girgensohn Date: Thu, 2 Apr 2020 09:34:12 +0200 Subject: [PATCH] Add PostgreSQL support --- lib/Auth/Source/authtfaga.php | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/Auth/Source/authtfaga.php b/lib/Auth/Source/authtfaga.php index 7c5e7bf..6791dce 100644 --- a/lib/Auth/Source/authtfaga.php +++ b/lib/Auth/Source/authtfaga.php @@ -116,7 +116,11 @@ private function createTables() public function enable2fa($uid) { - $q = "REPLACE INTO sspga_status (enable, uid) VALUES (1, '$uid')"; + if ($this->dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') { + $q = "INSERT INTO sspga_status (uid, enable) values ('$uid', true) ON CONFLICT (uid) DO UPDATE SET enable=EXCLUDED.enable"; + } else { + $q = "REPLACE INTO sspga_status (enable, uid) VALUES (1, '$uid')"; + } $result = $this->dbh->query($q); if($result===false) throw new Exception('Enable TFA failed '.$q); SimpleSAML_Logger::info('authtfaga: '.$uid.' turns ON the two-factor authentication.'); @@ -126,7 +130,11 @@ public function enable2fa($uid) public function disable2fa($uid) { - $q = "REPLACE INTO sspga_status (enable, uid) VALUES (0, '$uid')"; + if ($this->dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') { + $q = "INSERT INTO sspga_status (uid, enable) values ('$uid', false) ON CONFLICT (ui) DO UPDATE SET enable=EXCLUDED.enable"; + } else { + $q = "REPLACE INTO sspga_status (enable, uid) VALUES (0, '$uid')"; + } $this->dbh->query($q); SimpleSAML_Logger::info('authtfaga: '.$uid.' turns OFF the two-factor authentication.'); @@ -149,7 +157,11 @@ public function registerGAkey($uid, $ga_id) return false; } - $q = 'REPLACE INTO sspga_gakeys (uid,gakey) VALUES ("'.$uid.'","'.$ga_id.'");'; + if ($this->dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') { + $q = "INSERT INTO sspga_gakeys (uid, gakey) values ('$uid', '$ga_id') ON CONFLICT (gakey) DO UPDATE SET uid=EXCLUDED.uid"; + } else { + $q = 'REPLACE INTO sspga_gakeys (uid,gakey) VALUES ("'.$uid.'","'.$ga_id.'");'; + } $this->dbh->query($q); SimpleSAML_Logger::info('authtfaga: '.$uid.' register his gakey: '.$ga_id); @@ -158,7 +170,11 @@ public function registerGAkey($uid, $ga_id) public function deletegakey($uid, $ga_id) { - $q = 'DELETE FROM sspga_gakeys WHERE uid="'.$uid.'" AND gakey="'.$ga_id.'";'; + if ($this->dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') { + $q = "DELETE FROM sspga_gakeys WHERE uid='$uid' AND gakey='$ga_id'"; + } else { + $q = 'DELETE FROM sspga_gakeys WHERE uid="'.$uid.'" AND gakey="'.$ga_id.'";'; + } $this->dbh->query($q); SimpleSAML_Logger::info('authtfaga: '.$uid.' delete his gakey: '.$ga_id);