aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/www/include/backend/mysql/auth
diff options
context:
space:
mode:
authorM.Gergo2018-07-06 11:14:41 +0200
committerM.Gergo2018-07-06 11:14:41 +0200
commit43de9af71f7f4ca5731b94a06d688ae8412ba427 (patch)
tree54835de1dfcda504c02da261f0dc26885aed2e89 /mayor-orig/www/include/backend/mysql/auth
parent50310b0e4513ee3fcce67351ae61e8fff851130e (diff)
downloadmayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.tar.gz
mayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.zip
2018/Feb/28 -i állapot hozzáadva, mint a módosítások kiindulási állapota
Diffstat (limited to 'mayor-orig/www/include/backend/mysql/auth')
-rw-r--r--mayor-orig/www/include/backend/mysql/auth/login.php144
1 files changed, 144 insertions, 0 deletions
diff --git a/mayor-orig/www/include/backend/mysql/auth/login.php b/mayor-orig/www/include/backend/mysql/auth/login.php
new file mode 100644
index 00000000..caa7929d
--- /dev/null
+++ b/mayor-orig/www/include/backend/mysql/auth/login.php
@@ -0,0 +1,144 @@
+<?php
+/*
+ Auth-MySQL
+
+ A név-jelszó pár ellenőrzése MySQL adattábla alapján
+ */
+
+/* --------------------------------------------------------------
+
+Az adattábla szerkezete:
+
+create table userAccounts (
+userId int unsigned primary key auto_increment not null,
+userAccount varchar(32),
+policy varchar(10),
+userPassword varchar(32),
+userCn varchar(64)
+);
+
+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.
+
+Shadow attribútumok:
+
+Login name
+Encrypted password
+shadowLastChanged
+1970. január 1-étől az utolsó jelszó módosításig eltelt napok száma
+Days since Jan 1, 1970 that password was last changed
+shadowMin
+Jelszóváltoztatás után ennyi napig nem lehet ismét jelszót változtatni
+Days before password may be changed
+shadowMax
+Jelszóváltoztatás után ennyi nappal már kötelező a jelszóváltoztatás
+Days after which password must be changed
+shadowWarning
+A jelszó érvényességének lejártát ennyi nappal előbb jelezi a rendsze
+Days before password is to expire that user is warned
+shadowInactive
+A jelszó érvényességének lejárta után ennyi nappal az felhasználói fiók letiltásra kerül
+Days after password expires that account is disabled
+shadowExpire
+Az előzőektől függetlenül a felhasználói fiók letiltásra kerül 1970. január 1-étől számított ennyiedik napo
+Days since Jan 1, 1970 that account is disabled
+
+-------------------------------------------------------------- */
+
+function mysqlUserAuthentication($userAccount, $userPassword, &$accountInformation, $toPolicy = _POLICY) {
+
+ global $AUTH;
+
+ $modul = "$toPolicy auth";
+ $lr = db_connect($modul, array('fv' => 'userAuthentication/sql'));
+ if (!$lr) return _AUTH_FAILURE;
+
+ // Van-e ilyen azonosító
+ $q = "SELECT COUNT(*) FROM accounts WHERE userAccount='%s' AND policy='%s'";
+ $num = db_query($q, array('fv' => 'userAuthentication', 'modul' => $modul, 'result' => 'value', 'values' => array($userAccount, $toPolicy)), $lr);
+ if ($num == 0) {
+ // Nincs ilyen azonosító
+ $_SESSION['alert'][] = 'message:no_account:'."$userAccount:$toPolicy";
+ db_close($lr);
+ return _AUTH_FAILURE_1;
+ } elseif ($num > 1) {
+ // Több ilyen azonosító is va
+ $_SESSION['alert'][] = 'message:multy_uid';
+ db_close($lr);
+ return _AUTH_FAILURE_2;
+ }
+
+ // Ha csak egy van, akkor jó-e a jelszava
+ $q = "SELECT userCn, studyId, shadowLastChange, shadowMin, shadowMax, shadowWarning, shadowInactive, shadowExpire
+ FROM accounts WHERE userAccount='%s' AND userPassword=sha('%s') AND policy='%s'";
+ $ret = db_query($q, array('fv' => 'userAuthentication', 'modul' => 'login', 'result' => 'record', 'values' => array($userAccount, $userPassword, $toPolicy)), $lr);
+ db_close($lr);
+ if (!is_array($ret) || count($ret) == 0) {
+ // Nincs ilyen rekord => rossz a jelszó
+ $_SESSION['alert'][] = 'message:bad_pw';
+ return _AUTH_FAILURE_3;
+ } else {
+ // Ha van, akkor csak egy ilyen sor lehet
+ $accountInformation['cn'] = $ret['userCn'];
+ $accountInformation['studyId'] = $ret['studyId'];
+ $shadowLastChange = $ret['shadowLastChange'];
+ $shadowMin = $ret['shadowMin'];
+ $shadowMax = $ret['shadowMax'];
+ $shadowWarning = $ret['shadowWarning'];
+ $shadowInactive = $ret['shadowInactive'];
+ $shadowExpire = $ret['shadowExpire'];
+
+ // A lejárat ideje a shadowExpire és shadowLastChange+shadowMax kötül a kisebbik
+ if (intval($shadowExpire) != 0) $expireTimestamp = $shadowExpire;
+ if (
+ intval($shadowMax) != 0 &&
+ (
+ !isset($expireTimestamp) ||
+ $expireTimestamp > $shadowLastChange + $shadowMax
+ )
+ ) $expireTimestamp = $shadowLastChange + $shadowMax;
+ // lejárt, ha lejárat ideje már elmúlt
+ $accountExpired = (isset($expireTimestamp) && ($expireTimestamp <= floor(time()/(60*60*24))));
+
+ // Le van-e tiltva
+ if ( // onDisabled: none | refuse
+ $AUTH[$toPolicy]['onDisabled'] == 'refuse' &&
+ isset($expireTimestamp) &&
+ $expireTimestamp + $shadowInactive <= floor(time()/(60*60*24))
+ ) {
+ // Le van tiltva
+ $_SESSION['alert'][] = 'message:account_disabled:'.strval(floor(time()/(60*60*24)));
+ return _AUTH_FAILURE_4;
+ } // onDisabled
+
+ // Lejárt-e az azonosító
+ if ($AUTH[$toPolicy]['onExpired'] != 'none' && isset($expireTimestamp)) { // onExpired: none | warning | force update
+ // Lejárt-e
+ $pwLejar = $expireTimestamp - floor(time()/(60*60*24));
+ if (0 < $pwLejar && $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;
+
+ }
+}
+
+?>