21,8 → 21,6 |
|
abstract class OIDplusAuthContentStore implements OIDplusGetterSetterInterface { |
|
protected $content = array(); |
|
// Getter / Setter |
|
public abstract function getValue($name, $default = NULL); |
33,14 → 31,26 |
|
public abstract function delete($name); |
|
protected abstract function destroySession(); |
public abstract static function getActiveProvider(); |
|
// RA authentication functions |
public abstract function destroySession(); |
|
public abstract function activate(); |
|
public abstract function raLoginEx($email, &$loginfo); |
|
public abstract function raLogoutEx($email, &$loginfo); |
|
public abstract function adminLoginEx(&$loginfo); |
|
public abstract function adminLogoutEx(&$loginfo); |
|
// RA authentication functions (low-level) |
|
public function raLogin($email) { |
if (strpos($email, '|') !== false) return; |
|
$list = $this->getValue('oidplus_logged_in'); |
$list = $this->getValue('oidplus_ra_logged_in'); |
if (is_null($list)) $list = ''; |
|
$ary = ($list == '') ? array() : explode('|', $list); |
47,11 → 57,11 |
if (!in_array($email, $ary)) $ary[] = $email; |
$list = implode('|', $ary); |
|
$this->setValue('oidplus_logged_in', $list); |
$this->setValue('oidplus_ra_logged_in', $list); |
} |
|
public function raLogout($email) { |
$list = $this->getValue('oidplus_logged_in'); |
$list = $this->getValue('oidplus_ra_logged_in'); |
if (is_null($list)) $list = ''; |
|
$ary = ($list == '') ? array() : explode('|', $list); |
59,24 → 69,15 |
if ($key !== false) unset($ary[$key]); |
$list = implode('|', $ary); |
|
$this->setValue('oidplus_logged_in', $list); |
|
if (($list == '') && (!self::isAdminLoggedIn())) { |
// Nobody logged in anymore. Destroy session cookie to make GDPR people happy |
$this->destroySession(); |
$this->setValue('oidplus_ra_logged_in', $list); |
} |
} |
|
public function raNumLoggedIn() { |
return count(self::loggedInRaList()); |
return count($this->loggedInRaList()); |
} |
|
public function raLogoutAll() { |
$this->setValue('oidplus_logged_in', ''); |
} |
|
public function loggedInRaList() { |
$list = $this->getValue('oidplus_logged_in'); |
$list = $this->getValue('oidplus_ra_logged_in'); |
if (is_null($list)) $list = ''; |
|
$res = array(); |
88,13 → 89,13 |
} |
|
public function isRaLoggedIn($email) { |
foreach (self::loggedInRaList() as $ra) { |
foreach ($this->loggedInRaList() as $ra) { |
if ($email == $ra->raEmail()) return true; |
} |
return false; |
} |
|
// Admin authentication functions |
// Admin authentication functions (low-level) |
|
public function adminLogin() { |
$this->setValue('oidplus_admin_logged_in', 1); |
102,12 → 103,7 |
|
public function adminLogout() { |
$this->setValue('oidplus_admin_logged_in', 0); |
|
if (self::raNumLoggedIn() == 0) { |
// Nobody logged in anymore. Destroy session cookie to make GDPR people happy |
$this->destroySession(); |
} |
} |
|
public function isAdminLoggedIn() { |
return $this->getValue('oidplus_admin_logged_in') == 1; |