enhanced error messages
This commit is contained in:
		
							parent
							
								
									87986e93cc
								
							
						
					
					
						commit
						f75f813a9a
					
				|  | @ -112,7 +112,7 @@ class Ldap{ | |||
| 			else { | ||||
| 				// other errors
 | ||||
| 				logNewMessage(LOG_ERR, 'User ' . $user . ' (' . $clientSource . ') failed to log in (LDAP error: ' . getDefaultLDAPErrorString($this->server) . ').'); | ||||
| 				throw new LAMException(_("LDAP error, server says:"),  "($errorNumber) " . getDefaultLDAPErrorString($this->server), null, $errorNumber); | ||||
| 				throw new LAMException(_("Cannot connect to specified LDAP server. Please try again."),  "($errorNumber) " . getDefaultLDAPErrorString($this->server), null, $errorNumber); | ||||
| 			} | ||||
| 		} | ||||
| 		throw new LAMException(_("Cannot connect to specified LDAP server. Please try again.")); | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| <?php | ||||
| namespace LAM\LOGIN; | ||||
| use DateTime; | ||||
| use LAM\LIB\TWO_FACTOR\TwoFactorProviderService; | ||||
| use \LAMConfig; | ||||
| use \LAMCfgMain; | ||||
|  | @ -598,6 +599,7 @@ if(isset($_POST['checklogin'])) { | |||
| 		$extraMessage = null; | ||||
| 		if (($searchLDAP !== null) && ($e->getLdapErrorCode() == 49)) { | ||||
| 			$extraMessage = getExtraInvalidCredentialsMessage($searchLDAP, $username); | ||||
| 			$searchLDAP->close(); | ||||
| 		} | ||||
| 		display_LoginPage($licenseValidator, $e->getTitle(), $e->getMessage(), $extraMessage); | ||||
| 		exit(); | ||||
|  | @ -612,13 +614,26 @@ if(isset($_POST['checklogin'])) { | |||
|  * @return string extra message | ||||
|  */ | ||||
| function getExtraInvalidCredentialsMessage($ldap, $username) { | ||||
| 	$extraMessage = null; | ||||
| 	$userData = ldapGetDN($username, array('dn', 'pwdaccountlockedtime'), $ldap->server()); | ||||
|     $attributes = array('dn', 'pwdaccountlockedtime', 'krbprincipalexpiration', | ||||
|         'krbpasswordexpiration', 'passwordexpirationtime'); | ||||
| 	$userData = ldapGetDN($username, $attributes, $ldap->server()); | ||||
| 	$now = new DateTime('now', getTimeZone()); | ||||
| 	if (!empty($userData['pwdaccountlockedtime'][0])) { | ||||
| 		$extraMessage = _('Account is locked'); | ||||
| 		return _('Account is locked'); | ||||
| 	} | ||||
| 	$ldap->close(); | ||||
| 	return $extraMessage; | ||||
| 	if (!empty($userData['krbprincipalexpiration'][0])) { | ||||
| 		$kerberosExpirationDate = parseLDAPTimestamp($userData['krbprincipalexpiration'][0]); | ||||
| 		if ($now >= $kerberosExpirationDate) { | ||||
| 			return _('Kerberos account is expired'); | ||||
| 		} | ||||
| 	} | ||||
| 	if (!empty($userData['krbpasswordexpiration'][0])) { | ||||
| 		$kerberosExpirationDate = parseLDAPTimestamp($userData['krbpasswordexpiration'][0]); | ||||
| 		if ($now >= $kerberosExpirationDate) { | ||||
| 			return _('Kerberos password is expired'); | ||||
| 		} | ||||
| 	} | ||||
| 	return null; | ||||
| } | ||||
| 
 | ||||
| //displays the login window
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue