refactoring
This commit is contained in:
parent
cf25c31a37
commit
f0086e725b
|
@ -138,25 +138,24 @@ class lamList {
|
||||||
* Reads the list options from the cookie value.
|
* Reads the list options from the cookie value.
|
||||||
*/
|
*/
|
||||||
private function listReadOptionsFromCookie() {
|
private function listReadOptionsFromCookie() {
|
||||||
if (sizeof($this->configOptions) > 0) {
|
if ((sizeof($this->configOptions) > 0)
|
||||||
if (isset($_COOKIE["ListOptions_" . $this->type->getId()])) {
|
&& isset($_COOKIE["ListOptions_" . $this->type->getId()])) {
|
||||||
$cookieValue = $_COOKIE["ListOptions_" . $this->type->getId()];
|
$cookieValue = $_COOKIE["ListOptions_" . $this->type->getId()];
|
||||||
$valueParts = explode(";", $cookieValue);
|
$valueParts = explode(";", $cookieValue);
|
||||||
$values = array();
|
$values = array();
|
||||||
for ($i = 0; $i < sizeof($valueParts); $i++) {
|
for ($i = 0; $i < sizeof($valueParts); $i++) {
|
||||||
$key_value = explode('=', $valueParts[$i]);
|
$key_value = explode('=', $valueParts[$i]);
|
||||||
if (sizeof($key_value) == 2) {
|
if (sizeof($key_value) == 2) {
|
||||||
$values[$key_value[0]] = $key_value[1];
|
$values[$key_value[0]] = $key_value[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for ($i = 0; $i < sizeof($this->configOptions); $i++) {
|
|
||||||
if (isset($values[$this->configOptions[$i]->getID()])) {
|
|
||||||
$this->configOptions[$i]->setValue($values[$this->configOptions[$i]->getID()]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// notify subclasses
|
|
||||||
$this->listConfigurationChanged();
|
|
||||||
}
|
}
|
||||||
|
for ($i = 0; $i < sizeof($this->configOptions); $i++) {
|
||||||
|
if (isset($values[$this->configOptions[$i]->getID()])) {
|
||||||
|
$this->configOptions[$i]->setValue($values[$this->configOptions[$i]->getID()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// notify subclasses
|
||||||
|
$this->listConfigurationChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1018,10 +1017,9 @@ class lamList {
|
||||||
if (isset($_POST['refresh'])) {
|
if (isset($_POST['refresh'])) {
|
||||||
$this->refresh = true;
|
$this->refresh = true;
|
||||||
}
|
}
|
||||||
if (isset($_POST['apply_filter']) || isset($_POST['clear_filter'])) {
|
if ((isset($_POST['apply_filter']) || isset($_POST['clear_filter']))
|
||||||
if ($this->serverSideFilterChanged) {
|
&& $this->serverSideFilterChanged) {
|
||||||
$this->refresh = true;
|
$this->refresh = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1223,7 +1221,6 @@ class lamList {
|
||||||
if ($sizeOption->getValue() != null) {
|
if ($sizeOption->getValue() != null) {
|
||||||
$this->maxPageEntries = $sizeOption->getValue();
|
$this->maxPageEntries = $sizeOption->getValue();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -70,8 +70,6 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
/** business category cache */
|
/** business category cache */
|
||||||
private $businessCategoryCache = null;
|
private $businessCategoryCache = null;
|
||||||
|
|
||||||
/** cache for lockout duration */
|
|
||||||
private static $lockoutDurationCache = array();
|
|
||||||
/** cache for user name */
|
/** cache for user name */
|
||||||
private $cachedUserNameList = null;
|
private $cachedUserNameList = null;
|
||||||
/** cache for cn */
|
/** cache for cn */
|
||||||
|
@ -1250,7 +1248,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$this->addSimpleInputTextField($containerLeft, 'scriptPath', _('Logon script'));
|
$this->addSimpleInputTextField($containerLeft, 'scriptPath', _('Logon script'));
|
||||||
// home drive
|
// home drive
|
||||||
$drives = array('-');
|
$drives = array('-');
|
||||||
for ($i=90; $i>67; $i--) $drives[] = chr($i) . ':';
|
for ($i=90; $i>67; $i--) {
|
||||||
|
$drives[] = chr($i) . ':';
|
||||||
|
}
|
||||||
if (!empty($this->attributes['homeDrive'][0])) {
|
if (!empty($this->attributes['homeDrive'][0])) {
|
||||||
$selected = array(strtoupper($this->attributes['homeDrive'][0]));
|
$selected = array(strtoupper($this->attributes['homeDrive'][0]));
|
||||||
}
|
}
|
||||||
|
@ -1503,10 +1503,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
}
|
}
|
||||||
// save pwdLastSet for postModifyActions
|
// save pwdLastSet for postModifyActions
|
||||||
$this->pwdLastSet = null;
|
$this->pwdLastSet = null;
|
||||||
if (isset($this->attributes['pwdLastSet'][0])) {
|
if (isset($this->attributes['pwdLastSet'][0])
|
||||||
if (!isset($this->orig['pwdLastSet'][0]) || ($this->orig['pwdLastSet'][0] != $this->attributes['pwdLastSet'][0])) {
|
&& (!isset($this->orig['pwdLastSet'][0]) || ($this->orig['pwdLastSet'][0] != $this->attributes['pwdLastSet'][0]))) {
|
||||||
$this->pwdLastSet = $this->attributes['pwdLastSet'][0];
|
$this->pwdLastSet = $this->attributes['pwdLastSet'][0];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// deactivated
|
// deactivated
|
||||||
$deactivated = isset($_POST['deactivated']) && ($_POST['deactivated'] == 'on');
|
$deactivated = isset($_POST['deactivated']) && ($_POST['deactivated'] == 'on');
|
||||||
|
@ -1622,10 +1621,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$this->processMultiValueInputTextField('proxyAddresses', $return);
|
$this->processMultiValueInputTextField('proxyAddresses', $return);
|
||||||
}
|
}
|
||||||
// photo
|
// photo
|
||||||
if (!$this->isBooleanConfigOptionSet('windowsUser_hidejpegPhoto', true)) {
|
if (!$this->isBooleanConfigOptionSet('windowsUser_hidejpegPhoto', true)
|
||||||
if (isset($_POST['delPhoto'])) {
|
&& isset($_POST['delPhoto'])) {
|
||||||
unset($this->attributes['jpegPhoto']);
|
unset($this->attributes['jpegPhoto']);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
@ -1644,9 +1642,15 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
if (!empty($this->attributes[$attr][0]) && !($this->attributes[$attr][0] == '0')) {
|
if (!empty($this->attributes[$attr][0]) && !($this->attributes[$attr][0] == '0')) {
|
||||||
$datetime = windowsUser::getFileTime($this->attributes[$attr][0]);
|
$datetime = windowsUser::getFileTime($this->attributes[$attr][0]);
|
||||||
}
|
}
|
||||||
for ( $i=1; $i<=31; $i++ ) $mday[] = $i;
|
for ( $i=1; $i<=31; $i++ ) {
|
||||||
for ( $i=1; $i<=12; $i++ ) $mon[] = $i;
|
$mday[] = $i;
|
||||||
for ( $i=2003; $i<=2050; $i++ ) $year[] = $i;
|
}
|
||||||
|
for ( $i=1; $i<=12; $i++ ) {
|
||||||
|
$mon[] = $i;
|
||||||
|
}
|
||||||
|
for ( $i=2003; $i<=2050; $i++ ) {
|
||||||
|
$year[] = $i;
|
||||||
|
}
|
||||||
$return->addElement(new htmlOutputText($text));
|
$return->addElement(new htmlOutputText($text));
|
||||||
$return->addElement(new htmlSelect('expire_day', $mday, array($datetime->format('d'))));
|
$return->addElement(new htmlSelect('expire_day', $mday, array($datetime->format('d'))));
|
||||||
$return->addElement(new htmlSelect('expire_mon', $mon, array($datetime->format('m'))));
|
$return->addElement(new htmlSelect('expire_mon', $mon, array($datetime->format('m'))));
|
||||||
|
@ -1691,7 +1695,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$buttonName = $postKeys[$i];
|
$buttonName = $postKeys[$i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (($buttonName == '') || (strpos($buttonName, '_back') !== false)) return array();
|
if (($buttonName == '') || (strpos($buttonName, '_back') !== false)) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
$attr = 'accountExpires';
|
$attr = 'accountExpires';
|
||||||
// determine action
|
// determine action
|
||||||
if (strpos($buttonName, '_change') !== false) {
|
if (strpos($buttonName, '_change') !== false) {
|
||||||
|
@ -2046,8 +2052,6 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
private function uploadPhoto() {
|
private function uploadPhoto() {
|
||||||
$messages = array();
|
$messages = array();
|
||||||
if ($_FILES['photoFile'] && ($_FILES['photoFile']['size'] > 0)) {
|
if ($_FILES['photoFile'] && ($_FILES['photoFile']['size'] > 0)) {
|
||||||
$name = $_FILES['photoFile']['name'];
|
|
||||||
$extension = strtolower(substr($name, strpos($name, '.') + 1));
|
|
||||||
$handle = fopen($_FILES['photoFile']['tmp_name'], "r");
|
$handle = fopen($_FILES['photoFile']['tmp_name'], "r");
|
||||||
$data = fread($handle, 10000000);
|
$data = fread($handle, 10000000);
|
||||||
if (!empty($this->moduleSettings['windowsUser_jpegPhoto_maxSize'][0]) && (strlen($data) > (1024 * $this->moduleSettings['windowsUser_jpegPhoto_maxSize'][0]))) {
|
if (!empty($this->moduleSettings['windowsUser_jpegPhoto_maxSize'][0]) && (strlen($data) > (1024 * $this->moduleSettings['windowsUser_jpegPhoto_maxSize'][0]))) {
|
||||||
|
@ -2111,7 +2115,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$selectedManager[] = $this->attributes['manager'][0];
|
$selectedManager[] = $this->attributes['manager'][0];
|
||||||
}
|
}
|
||||||
$size = 20;
|
$size = 20;
|
||||||
if (sizeof($options) < 20) $size = sizeof($options);
|
if (sizeof($options) < 20) {
|
||||||
|
$size = sizeof($options);
|
||||||
|
}
|
||||||
$managerSelect = new htmlSelect('manager', $options, $selectedManager, $size);
|
$managerSelect = new htmlSelect('manager', $options, $selectedManager, $size);
|
||||||
$managerSelect->setHasDescriptiveElements(true);
|
$managerSelect->setHasDescriptiveElements(true);
|
||||||
$managerSelect->setRightToLeftTextDirection(true);
|
$managerSelect->setRightToLeftTextDirection(true);
|
||||||
|
@ -2162,7 +2168,6 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$groups = $this->findGroups();
|
$groups = $this->findGroups();
|
||||||
$toAdd = array_values(array_diff($this->groupList, $this->groupList_orig));
|
$toAdd = array_values(array_diff($this->groupList, $this->groupList_orig));
|
||||||
$toRem = array_values(array_diff($this->groupList_orig, $this->groupList));
|
$toRem = array_values(array_diff($this->groupList_orig, $this->groupList));
|
||||||
$toUpdate = array_values(array_intersect($this->groupList, $this->groupList_orig));
|
|
||||||
$ldapUser = $_SESSION['ldap']->decrypt_login();
|
$ldapUser = $_SESSION['ldap']->decrypt_login();
|
||||||
$ldapUser = $ldapUser[0];
|
$ldapUser = $ldapUser[0];
|
||||||
// add groups
|
// add groups
|
||||||
|
@ -2230,7 +2235,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$booleanOptions = array(_('yes') => true, _('no') => false);
|
$booleanOptions = array(_('yes') => true, _('no') => false);
|
||||||
for ($i = 0; $i < sizeof($rawAccounts); $i++) {
|
for ($i = 0; $i < sizeof($rawAccounts); $i++) {
|
||||||
// add object class
|
// add object class
|
||||||
if (!in_array('user', $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = 'user';
|
if (!in_array('user', $partialAccounts[$i]['objectClass'])) {
|
||||||
|
$partialAccounts[$i]['objectClass'][] = 'user';
|
||||||
|
}
|
||||||
// userPrincipalName
|
// userPrincipalName
|
||||||
if (get_preg($rawAccounts[$i][$ids['windowsUser_userPrincipalName']], 'username')) {
|
if (get_preg($rawAccounts[$i][$ids['windowsUser_userPrincipalName']], 'username')) {
|
||||||
$partialAccounts[$i]['userPrincipalName'] = $rawAccounts[$i][$ids['windowsUser_userPrincipalName']];
|
$partialAccounts[$i]['userPrincipalName'] = $rawAccounts[$i][$ids['windowsUser_userPrincipalName']];
|
||||||
|
@ -2445,10 +2452,9 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$partialAccounts[$i]['userAccountControl'][0] = $userAccountControlAttr['userAccountControl'][0];
|
$partialAccounts[$i]['userAccountControl'][0] = $userAccountControlAttr['userAccountControl'][0];
|
||||||
// end user account control
|
// end user account control
|
||||||
// password change at next login
|
// password change at next login
|
||||||
if ($rawAccounts[$i][$ids['windowsUser_pwdMustChange']] != "") {
|
if (($rawAccounts[$i][$ids['windowsUser_pwdMustChange']] != "")
|
||||||
if (!isset($booleanOptions[$rawAccounts[$i][$ids['windowsUser_pwdMustChange']]])) {
|
&& !isset($booleanOptions[$rawAccounts[$i][$ids['windowsUser_pwdMustChange']]])) {
|
||||||
$errors[] = array('ERROR', sprintf(_('Account %s:'), $i) . ' windowsUser_pwdMustChange', _('Please enter either yes or no.'));
|
$errors[] = array('ERROR', sprintf(_('Account %s:'), $i) . ' windowsUser_pwdMustChange', _('Please enter either yes or no.'));
|
||||||
}
|
|
||||||
// attribute must be set in postModify
|
// attribute must be set in postModify
|
||||||
}
|
}
|
||||||
// profile path
|
// profile path
|
||||||
|
@ -2839,20 +2845,19 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
$this->setExpirationDate($dateTarget->format('Y'), $dateTarget->format('m'), $dateTarget->format('d'));
|
$this->setExpirationDate($dateTarget->format('Y'), $dateTarget->format('m'), $dateTarget->format('d'));
|
||||||
}
|
}
|
||||||
// departments
|
// departments
|
||||||
if (!$this->isBooleanConfigOptionSet('windowsUser_hidedepartment')) {
|
if (!$this->isBooleanConfigOptionSet('windowsUser_hidedepartment')
|
||||||
if (isset($profile['windowsUser_department'][0]) && $profile['windowsUser_department'][0] != '') {
|
&& isset($profile['windowsUser_department'][0])
|
||||||
$departments = explode(';', $profile['windowsUser_department'][0]);
|
&& ($profile['windowsUser_department'][0] != '')) {
|
||||||
// remove extra spaces and set attributes
|
$departments = explode(';', $profile['windowsUser_department'][0]);
|
||||||
$this->attributes['department'] = array_map('trim', $departments);
|
// remove extra spaces and set attributes
|
||||||
}
|
$this->attributes['department'] = array_map('trim', $departments);
|
||||||
}
|
}
|
||||||
// department numbers
|
// department numbers
|
||||||
if (!$this->isBooleanConfigOptionSet('windowsUser_hidedepartmentNumber')) {
|
if (!$this->isBooleanConfigOptionSet('windowsUser_hidedepartmentNumber')
|
||||||
if (!empty($profile['windowsUser_departmentNumber'][0])) {
|
&& !empty($profile['windowsUser_departmentNumber'][0])) {
|
||||||
$departmentNumbers = explode(';', $profile['windowsUser_departmentNumber'][0]);
|
$departmentNumbers = explode(';', $profile['windowsUser_departmentNumber'][0]);
|
||||||
// remove extra spaces and set attributes
|
// remove extra spaces and set attributes
|
||||||
$this->attributes['departmentNumber'] = array_map('trim', $departmentNumbers);
|
$this->attributes['departmentNumber'] = array_map('trim', $departmentNumbers);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// organizational unit
|
// organizational unit
|
||||||
if (!$this->isBooleanConfigOptionSet('windowsUser_hideou') && isset($profile['windowsUser_ou'][0])) {
|
if (!$this->isBooleanConfigOptionSet('windowsUser_hideou') && isset($profile['windowsUser_ou'][0])) {
|
||||||
|
@ -2941,32 +2946,32 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
*/
|
*/
|
||||||
function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly, $readOnlyFields) {
|
function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly, $readOnlyFields) {
|
||||||
$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
|
$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
|
||||||
if (in_array('unicodePwd', $fields)) {
|
if (in_array('unicodePwd', $fields)
|
||||||
if (isset($_POST['windowsUser_unicodePwd']) && ($_POST['windowsUser_unicodePwd'] != '')) {
|
&& isset($_POST['windowsUser_unicodePwd'])
|
||||||
if ($_POST['windowsUser_unicodePwd'] != $_POST['windowsUser_unicodePwd2']) {
|
&& ($_POST['windowsUser_unicodePwd'] != '')) {
|
||||||
$return['messages'][] = $this->messages['unicodePwd'][0];
|
if ($_POST['windowsUser_unicodePwd'] != $_POST['windowsUser_unicodePwd2']) {
|
||||||
|
$return['messages'][] = $this->messages['unicodePwd'][0];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!get_preg($_POST['windowsUser_unicodePwd'], 'password')) {
|
||||||
|
$return['messages'][] = $this->messages['unicodePwd'][1];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!get_preg($_POST['windowsUser_unicodePwd'], 'password')) {
|
$userName = empty($attributes['userPrincipalName'][0]) ? null : $attributes['userPrincipalName'][0];
|
||||||
$return['messages'][] = $this->messages['unicodePwd'][1];
|
$additionalAttrs = array();
|
||||||
|
if (!empty($attributes['sn'][0])) {
|
||||||
|
$additionalAttrs[] = $attributes['sn'][0];
|
||||||
|
}
|
||||||
|
if (!empty($attributes['givenName'][0])) {
|
||||||
|
$additionalAttrs[] = $attributes['givenName'][0];
|
||||||
|
}
|
||||||
|
$pwdPolicyResult = checkPasswordStrength($_POST['windowsUser_unicodePwd'], $userName, $additionalAttrs);
|
||||||
|
if ($pwdPolicyResult === true) {
|
||||||
|
$this->setSelfServicePassword($return, $attributes);
|
||||||
|
$return['info']['userPasswordClearText'][0] = $_POST['windowsUser_unicodePwd'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$userName = empty($attributes['userPrincipalName'][0]) ? null : $attributes['userPrincipalName'][0];
|
$return['messages'][] = array('ERROR', $pwdPolicyResult);
|
||||||
$additionalAttrs = array();
|
|
||||||
if (!empty($attributes['sn'][0])) {
|
|
||||||
$additionalAttrs[] = $attributes['sn'][0];
|
|
||||||
}
|
|
||||||
if (!empty($attributes['givenName'][0])) {
|
|
||||||
$additionalAttrs[] = $attributes['givenName'][0];
|
|
||||||
}
|
|
||||||
$pwdPolicyResult = checkPasswordStrength($_POST['windowsUser_unicodePwd'], $userName, $additionalAttrs);
|
|
||||||
if ($pwdPolicyResult === true) {
|
|
||||||
$this->setSelfServicePassword($return, $attributes);
|
|
||||||
$return['info']['userPasswordClearText'][0] = $_POST['windowsUser_unicodePwd'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$return['messages'][] = array('ERROR', $pwdPolicyResult);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3019,7 +3024,7 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
'values' => array($newPasswordVal)
|
'values' => array($newPasswordVal)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$success = @ldap_modify_batch($_SESSION['ldapHandle'], $dn, $operation);
|
@ldap_modify_batch($_SESSION['ldapHandle'], $dn, $operation);
|
||||||
$returnCode = ldap_errno($_SESSION['ldapHandle']);
|
$returnCode = ldap_errno($_SESSION['ldapHandle']);
|
||||||
if ($returnCode != 0) {
|
if ($returnCode != 0) {
|
||||||
$outputMessages = htmlspecialchars(getExtendedLDAPErrorMessage($_SESSION['ldapHandle']));
|
$outputMessages = htmlspecialchars(getExtendedLDAPErrorMessage($_SESSION['ldapHandle']));
|
||||||
|
@ -3029,7 +3034,6 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
}
|
}
|
||||||
logNewMessage(LOG_ERR, 'Changing user password failed: ' . $outputMessages);
|
logNewMessage(LOG_ERR, 'Changing user password failed: ' . $outputMessages);
|
||||||
$return['messages'][] = array('ERROR', _('Unable to change password.'), $outputMessages);
|
$return['messages'][] = array('ERROR', _('Unable to change password.'), $outputMessages);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// update session password for next page load
|
// update session password for next page load
|
||||||
|
@ -3104,7 +3108,6 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
}
|
}
|
||||||
logNewMessage(LOG_ERR, 'Changing user password failed: ' . $outputMessages);
|
logNewMessage(LOG_ERR, 'Changing user password failed: ' . $outputMessages);
|
||||||
$return['messages'][] = array('ERROR', _('Unable to change password.'), $outputMessages);
|
$return['messages'][] = array('ERROR', _('Unable to change password.'), $outputMessages);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// update session password for next page load
|
// update session password for next page load
|
||||||
|
@ -3230,18 +3233,22 @@ class windowsUser extends baseModule implements passwordService {
|
||||||
private static function getDomainLockoutDuration($dn) {
|
private static function getDomainLockoutDuration($dn) {
|
||||||
$lowerDn = strtolower($dn);
|
$lowerDn = strtolower($dn);
|
||||||
$domainRoot = substr($lowerDn, strpos($lowerDn, 'dc='));
|
$domainRoot = substr($lowerDn, strpos($lowerDn, 'dc='));
|
||||||
if (isset(windowsUser::$lockoutDurationCache[$domainRoot])) {
|
if (!isset($_SESSION['windowsUser_cacheDomainLockoutDuration'])) {
|
||||||
return windowsUser::$lockoutDurationCache[$domainRoot];
|
$_SESSION['windowsUser_cacheDomainLockoutDuration'] = array();
|
||||||
|
}
|
||||||
|
$cache = &$_SESSION['windowsUser_cacheDomainLockoutDuration'];
|
||||||
|
if (isset($cache[$domainRoot])) {
|
||||||
|
return $cache[$domainRoot];
|
||||||
}
|
}
|
||||||
$policyDN = 'cn=builtin,' . $domainRoot;
|
$policyDN = 'cn=builtin,' . $domainRoot;
|
||||||
$policyAttrs = ldapGetDN($policyDN, array('lockoutduration'));
|
$policyAttrs = ldapGetDN($policyDN, array('lockoutduration'));
|
||||||
if (!empty($policyAttrs['lockoutduration'][0])) {
|
if (!empty($policyAttrs['lockoutduration'][0])) {
|
||||||
windowsUser::$lockoutDurationCache[$domainRoot] = $policyAttrs['lockoutduration'][0];
|
$cache[$domainRoot] = $policyAttrs['lockoutduration'][0];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
windowsUser::$lockoutDurationCache[$domainRoot] = null;
|
$cache[$domainRoot] = null;
|
||||||
}
|
}
|
||||||
return windowsUser::$lockoutDurationCache[$domainRoot];
|
return $cache[$domainRoot];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3869,8 +3876,7 @@ if (interface_exists('\LAM\JOB\Job', false)) {
|
||||||
$sysattrs = array('mail', 'pwdLastSet', 'accountExpires', 'useraccountcontrol');
|
$sysattrs = array('mail', 'pwdLastSet', 'accountExpires', 'useraccountcontrol');
|
||||||
$attrs = $this->getAttrWildcards($jobID, $options);
|
$attrs = $this->getAttrWildcards($jobID, $options);
|
||||||
$attrs = array_values(array_unique(array_merge($attrs, $sysattrs)));
|
$attrs = array_values(array_unique(array_merge($attrs, $sysattrs)));
|
||||||
$userResults = searchLDAPByFilter('(&(pwdLastSet=*)(mail=*))', $attrs, array('user'));
|
return searchLDAPByFilter('(&(pwdLastSet=*)(mail=*))', $attrs, array('user'));
|
||||||
return $userResults;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3987,8 +3993,7 @@ if (interface_exists('\LAM\JOB\Job', false)) {
|
||||||
$sysattrs = array('mail', 'accountExpires', 'useraccountcontrol');
|
$sysattrs = array('mail', 'accountExpires', 'useraccountcontrol');
|
||||||
$attrs = $this->getAttrWildcards($jobID, $options);
|
$attrs = $this->getAttrWildcards($jobID, $options);
|
||||||
$attrs = array_values(array_unique(array_merge($attrs, $sysattrs)));
|
$attrs = array_values(array_unique(array_merge($attrs, $sysattrs)));
|
||||||
$userResults = searchLDAPByFilter('(&(accountExpires=*)(!(accountExpires=0))(mail=*))', $attrs, array('user'));
|
return searchLDAPByFilter('(&(accountExpires=*)(!(accountExpires=0))(mail=*))', $attrs, array('user'));
|
||||||
return $userResults;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4081,8 +4086,7 @@ if (interface_exists('\LAM\JOB\Job', false)) {
|
||||||
protected function findUsers($jobID, $options) {
|
protected function findUsers($jobID, $options) {
|
||||||
// read users
|
// read users
|
||||||
$attrs = array('accountExpires');
|
$attrs = array('accountExpires');
|
||||||
$userResults = searchLDAPByFilter('(accountExpires=*)', $attrs, array('user'));
|
return searchLDAPByFilter('(accountExpires=*)', $attrs, array('user'));
|
||||||
return $userResults;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -225,9 +225,7 @@ function deletePDFLogo($name) {
|
||||||
if ($success) {
|
if ($success) {
|
||||||
return new htmlStatusMessage('INFO', _('Logo file deleted.'), $name);
|
return new htmlStatusMessage('INFO', _('Logo file deleted.'), $name);
|
||||||
}
|
}
|
||||||
else {
|
return new htmlStatusMessage('ERROR', _('Unable to delete logo file.'), $name);
|
||||||
return new htmlStatusMessage('ERROR', _('Unable to delete logo file.'), $name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -350,10 +348,8 @@ class PDFStructureReader {
|
||||||
$structure->setFoldingMarks($xml->getAttribute('foldingmarks'));
|
$structure->setFoldingMarks($xml->getAttribute('foldingmarks'));
|
||||||
$sections = array();
|
$sections = array();
|
||||||
while ($xml->read()) {
|
while ($xml->read()) {
|
||||||
if ($xml->nodeType === \XMLReader::SIGNIFICANT_WHITESPACE) {
|
if (($xml->nodeType === \XMLReader::SIGNIFICANT_WHITESPACE)
|
||||||
continue;
|
|| (($xml->name === 'pdf') && ($xml->nodeType == \XMLReader::END_ELEMENT))) {
|
||||||
}
|
|
||||||
elseif (($xml->name === 'pdf') && ($xml->nodeType == \XMLReader::END_ELEMENT)) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
elseif ($xml->name === 'text') {
|
elseif ($xml->name === 'text') {
|
||||||
|
@ -390,10 +386,8 @@ class PDFStructureReader {
|
||||||
if (($xml->name === 'section') && ($xml->nodeType == \XMLReader::END_ELEMENT)) {
|
if (($xml->name === 'section') && ($xml->nodeType == \XMLReader::END_ELEMENT)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
elseif ($xml->nodeType === \XMLReader::END_ELEMENT) {
|
elseif (($xml->nodeType === \XMLReader::END_ELEMENT)
|
||||||
continue;
|
|| ($xml->nodeType === \XMLReader::SIGNIFICANT_WHITESPACE)) {
|
||||||
}
|
|
||||||
elseif ($xml->nodeType === \XMLReader::SIGNIFICANT_WHITESPACE) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
elseif ($xml->name === 'entry') {
|
elseif ($xml->name === 'entry') {
|
||||||
|
|
|
@ -5,7 +5,7 @@ use \LAMException;
|
||||||
$Id$
|
$Id$
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2003 - 2017 Roland Gruber
|
Copyright (C) 2003 - 2018 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -94,17 +94,18 @@ function loadAccountProfile($profile, $typeId) {
|
||||||
}
|
}
|
||||||
$settings = array();
|
$settings = array();
|
||||||
$file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $_SESSION['config']->getName() . '/' . $profile . "." . $typeId;
|
$file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $_SESSION['config']->getName() . '/' . $profile . "." . $typeId;
|
||||||
if (is_file($file) == True) {
|
if (is_file($file)) {
|
||||||
$file = @fopen($file, "r");
|
$file = @fopen($file, "r");
|
||||||
if ($file) {
|
if ($file) {
|
||||||
while (!feof($file)) {
|
while (!feof($file)) {
|
||||||
$line = fgets($file, 1024);
|
$line = fgets($file, 1024);
|
||||||
if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
|
if (($line == "\n")||($line[0] == "#")) {
|
||||||
|
continue; // ignore comments
|
||||||
|
}
|
||||||
// search keywords
|
// search keywords
|
||||||
$parts = array();
|
$parts = array();
|
||||||
$parts = explode(": ", $line);
|
$parts = explode(": ", $line);
|
||||||
if (sizeof($parts) != 2) continue; // ignore malformed settings
|
if (sizeof($parts) == 2) {
|
||||||
else {
|
|
||||||
$option = $parts[0];
|
$option = $parts[0];
|
||||||
$value = $parts[1];
|
$value = $parts[1];
|
||||||
// remove line ends
|
// remove line ends
|
||||||
|
@ -188,7 +189,7 @@ function delAccountProfile($file, $typeId) {
|
||||||
if (is_file($prof)) {
|
if (is_file($prof)) {
|
||||||
return @unlink($prof);
|
return @unlink($prof);
|
||||||
}
|
}
|
||||||
else return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,7 +4,7 @@ $Id:
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2012 Christian Kropp
|
Copyright (C) 2012 Christian Kropp
|
||||||
2012 - 2016 Roland Gruber
|
2012 - 2018 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -43,8 +43,7 @@ function testPermissions() {
|
||||||
$result[] = htmlspecialchars(realpath('../config'));
|
$result[] = htmlspecialchars(realpath('../config'));
|
||||||
}
|
}
|
||||||
$result = array_merge($result, testPermissionRecursive('../config/profiles/'));
|
$result = array_merge($result, testPermissionRecursive('../config/profiles/'));
|
||||||
$result = array_merge($result, testPermissionRecursive('../config/pdf/'));
|
return array_merge($result, testPermissionRecursive('../config/pdf/'));
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -183,8 +182,8 @@ function recursiveDelete($src, $profiles) {
|
||||||
if ($tmpState === false) {
|
if ($tmpState === false) {
|
||||||
StatusMessage('ERROR', 'Upgrade failed.', 'The file ' . $src . ' could not be deleted.');
|
StatusMessage('ERROR', 'Upgrade failed.', 'The file ' . $src . ' could not be deleted.');
|
||||||
}
|
}
|
||||||
return;
|
}
|
||||||
} else if (is_dir($src) && is_writable($src)) {
|
elseif (is_dir($src) && is_writable($src)) {
|
||||||
$dir = @opendir($src);
|
$dir = @opendir($src);
|
||||||
while (false !== ($path = readdir($dir))) {
|
while (false !== ($path = readdir($dir))) {
|
||||||
if ($path != '.' && $path != '..' && !in_array($path, $profiles)) {
|
if ($path != '.' && $path != '..' && !in_array($path, $profiles)) {
|
||||||
|
@ -199,10 +198,9 @@ function recursiveDelete($src, $profiles) {
|
||||||
StatusMessage('ERROR', 'Upgrade failed.', 'The directory ' . $src . ' could not be deleted.');
|
StatusMessage('ERROR', 'Upgrade failed.', 'The directory ' . $src . ' could not be deleted.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
}
|
||||||
} else {
|
else {
|
||||||
StatusMessage('ERROR', 'Upgrade failed.', 'The directory ' . $src . ' has missing write permissions.');
|
StatusMessage('ERROR', 'Upgrade failed.', 'The directory ' . $src . ' has missing write permissions.');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,9 @@ if (isset($_POST['add_suff']) || isset($_POST['cancel'])) {
|
||||||
$dnPartsCount = sizeof($dnParts);
|
$dnPartsCount = sizeof($dnParts);
|
||||||
for ($k = 0; $k < $dnPartsCount; $k++) {
|
for ($k = 0; $k < $dnPartsCount; $k++) {
|
||||||
$part = explode("=", $dnParts[$k]);
|
$part = explode("=", $dnParts[$k]);
|
||||||
if ($part[0] == "ou") $subsuffs[] = implode(",", array_slice($dnParts, $k));
|
if ($part[0] == "ou") {
|
||||||
|
$subsuffs[] = implode(",", array_slice($dnParts, $k));
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
$subsuffs[] = implode(",", array_slice($dnParts, $k));
|
$subsuffs[] = implode(",", array_slice($dnParts, $k));
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue