aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/www/include/backend/file/auth
diff options
context:
space:
mode:
Diffstat (limited to 'mayor-orig/www/include/backend/file/auth')
-rw-r--r--mayor-orig/www/include/backend/file/auth/login.php121
1 files changed, 121 insertions, 0 deletions
diff --git a/mayor-orig/www/include/backend/file/auth/login.php b/mayor-orig/www/include/backend/file/auth/login.php
new file mode 100644
index 00000000..bc77f9f7
--- /dev/null
+++ b/mayor-orig/www/include/backend/file/auth/login.php
@@ -0,0 +1,121 @@
+<?php
+/*
+ Auth-File
+
+ A név-jelszó pár ellenőrzése file-ból történik
+*/
+
+/* --------------------------------------------------------------
+
+ Felhasználók azonosítása egyszerű szöveges file-ból
+
+ A file szerkezete:
+ Soronként egy account adatai, egymástól kettősponttal elválasztott mezők:
+ azonosító:név:jelszó:oktAzon:shadowLastChange:shadowMin:shadowMax:shadowWarning:shadowInactive:shadowExpire
+
+ A függvény az előre definiált _AUTH_SUCCESS, _AUTH_EXPIRED, _AUTH_FAILURE
+ konstansok valamelyikével tér vissza.
+
+ Sikeres hitelesítés esetén
+ az egyéb account információkat (minimálisan a 'cn', azaz 'teljes név'
+ attribútumot) a cím szerint átadott $accountInformation tömbbe helyezi el.
+
+ Sikertelen azonosítás esetén a globális $_SESSION['alert'] változóban jelzi az
+ elutasítás okát.
+
+-------------------------------------------------------------- */
+ function fileUserAuthentication($userAccount, $userPassword, &$accountInformation) {
+
+ global $AUTH;
+
+ $toPolicy = $accountInformation['policy'];
+ $fp = @fopen($AUTH[$toPolicy]['file account file'],'r');
+ if (!$fp) {
+ // nem lehet megnyitni a file-t
+ $_SESSION['alert'][] = 'message:file_open_failure:'.$AUTH[$toPolicy]['file account file'];
+ return _AUTH_FAILURE;
+ }
+
+ $valid = false;
+ while (!$valid and $sor = chop(fgets($fp, 1024))) {
+
+ list(
+ $_userAccount,
+ $_userCn,
+ $_userPassword,
+ $_studyId,
+ $shadowLastChange,
+ $shadowMin,
+ $shadowMax,
+ $shadowWarning,
+ $shadowInactive,
+ $shadowExpire
+ ) = explode(':',$sor);
+ $valid = ($_userAccount == $userAccount and $_userPassword == $userPassword); // itt lehetne a kódolt jelszót eltárolni és azzal hasonlítani
+
+ }
+
+ fclose($fp);
+
+ if ($valid) {
+
+ $accountInformation['cn'] = $_userCn;
+ $accountInformation['studyId'] = $_studyId;
+
+ if ( // onDisabled: none | refuse
+ $AUTH[$toPolicy]['onDisabled'] == 'refuse' &&
+ (
+ (
+ $shadowExpire != '' &&
+ $shadowExpire <= floor(time()/(60*60*24))
+ ) ||
+ (
+ $shadowLastChange != '' &&
+ $shadowMax != '' &&
+ $shadowInactive != '' &&
+ ( $shadowLastChange
+ + $shadowMax
+ + $shadowInactive ) <= floor(time()/(60*60*24))
+ )
+ )
+ ) {
+ // Le van tiltva
+ $_SESSION['alert'][] = 'message:account_disabled';
+ return _AUTH_FAILURE_4;
+ } // onDisabled
+
+ // Lejárt-e az azonosító
+ if (
+ $AUTH[$toPolicy]['onExpired'] != 'none' && // onExpired: none | warning | force update
+ $shadowLastChange != '' &&
+ $shadowMax != ''
+ ) {
+ // Lejárt-e
+ $pwLejar = ($shadowLastChange + $shadowMax) - floor(time()/(60*60*24));
+ if (0 < $pwLejar && $shadowWarning != '' && $pwLejar < $shadowWarning) {
+ $_SESSION['alert'][] = 'info:account_warning:'.$pwLejar;
+ return _AUTH_SUCCESS;
+ } elseif ($pwLejar <= 0) {
+ $_SESSION['alert'][] = 'info:account_expired:'.abs($pwLejar);
+ if ($AUTH[$toPolicy]['onDisabled'] == 'refuse')
+ $_SESSION['alert'][] = 'info:warn_account_disable:'.($shadowInactive+$pwLejar);
+ if ($AUTH[$toPolicy]['onExpired'] == 'warning') {
+ return _AUTH_SUCCESS;
+ } elseif ($AUTH[$toPolicy]['onExpired'] == 'force update') {
+ return _AUTH_EXPIRED;
+ }
+ }
+ } // onExpired
+
+ return _AUTH_SUCCESS;
+
+ } else {
+
+ $_SESSION['alert'][] = 'message:bad_pw';
+ return _AUTH_FAILURE_3;
+
+ }
+
+ }
+
+?>