Commit 3a7a969e428d8c876f8a317255f0499d616a3ea1
1 parent
55b13eb1
Merged in from DEV trunk...
KTS-2772 "CLONE -LDAP / Active Directory Authentication incorrect fields returned(SUP-521)" Fixed. Rearranged the attributes retrieved from either directory to match the user's fields correctly. Committed by: Megan Watson Reviewed by: Conrad Vermeulen git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.4.6-Release-Branch@7917 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
4 changed files
with
99 additions
and
29 deletions
plugins/ktstandard/ldap/activedirectoryauthenticationprovider.inc.php
| @@ -34,20 +34,21 @@ require_once(KT_LIB_DIR . '/authentication/Authenticator.inc'); | @@ -34,20 +34,21 @@ require_once(KT_LIB_DIR . '/authentication/Authenticator.inc'); | ||
| 34 | require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php'); | 34 | require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php'); |
| 35 | 35 | ||
| 36 | class KTActiveDirectoryAuthenticationProvider extends KTLDAPBaseAuthenticationProvider { | 36 | class KTActiveDirectoryAuthenticationProvider extends KTLDAPBaseAuthenticationProvider { |
| 37 | - var $sNamespace = "ktstandard.authentication.adprovider"; | 37 | + var $sNamespace = 'ktstandard.authentication.adprovider'; |
| 38 | 38 | ||
| 39 | var $bGroupSource = true; | 39 | var $bGroupSource = true; |
| 40 | 40 | ||
| 41 | - var $sAuthenticatorClass = "KTActiveDirectoryAuthenticator"; | ||
| 42 | - var $aAttributes = array ("cn", "samaccountname", "givenname", "sn", "userprincipalname", "telephonenumber"); | 41 | + var $sAuthenticatorClass = 'KTActiveDirectoryAuthenticator'; |
| 42 | + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'telephonenumber', 'userprincipalname'); | ||
| 43 | 43 | ||
| 44 | function KTActiveDirectoryAuthenticationProvider() { | 44 | function KTActiveDirectoryAuthenticationProvider() { |
| 45 | - $this->sName = _kt("ActiveDirectory authentication provider"); | 45 | + $this->sName = _kt('ActiveDirectory authentication provider'); |
| 46 | parent::KTLDAPBaseAuthenticationProvider(); | 46 | parent::KTLDAPBaseAuthenticationProvider(); |
| 47 | } | 47 | } |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | class KTActiveDirectoryAuthenticator extends KTLDAPBaseAuthenticator { | 50 | class KTActiveDirectoryAuthenticator extends KTLDAPBaseAuthenticator { |
| 51 | - var $aAttributes = array ("cn", "samaccountname", "givenname", "sn", "userprincipalname", "telephonenumber"); | 51 | + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'telephonenumber', 'userprincipalname'); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | +?> | ||
| 54 | \ No newline at end of file | 55 | \ No newline at end of file |
plugins/ktstandard/ldap/ldapauthenticationprovider.inc.php
| @@ -35,19 +35,20 @@ require_once('Net/LDAP.php'); | @@ -35,19 +35,20 @@ require_once('Net/LDAP.php'); | ||
| 35 | require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php'); | 35 | require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php'); |
| 36 | 36 | ||
| 37 | class KTLDAPAuthenticationProvider extends KTLDAPBaseAuthenticationProvider { | 37 | class KTLDAPAuthenticationProvider extends KTLDAPBaseAuthenticationProvider { |
| 38 | - var $sNamespace = "ktstandard.authentication.ldapprovider"; | 38 | + var $sNamespace = 'ktstandard.authentication.ldapprovider'; |
| 39 | 39 | ||
| 40 | - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile"); | ||
| 41 | - var $sAuthenticatorClass = "KTLDAPAuthenticator"; | 40 | + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid'); |
| 41 | + var $sAuthenticatorClass = 'KTLDAPAuthenticator'; | ||
| 42 | 42 | ||
| 43 | function KTLDAPAuthenticationProvider() { | 43 | function KTLDAPAuthenticationProvider() { |
| 44 | - $this->sName = _kt("LDAP authentication provider"); | 44 | + $this->sName = _kt('LDAP authentication provider'); |
| 45 | parent::KTLDAPBaseAuthenticationProvider(); | 45 | parent::KTLDAPBaseAuthenticationProvider(); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | class KTLDAPAuthenticator extends KTLDAPBaseAuthenticator { | 50 | class KTLDAPAuthenticator extends KTLDAPBaseAuthenticator { |
| 51 | - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile"); | 51 | + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid'); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | +?> | ||
| 54 | \ No newline at end of file | 55 | \ No newline at end of file |
plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php
| @@ -33,11 +33,11 @@ require_once(KT_LIB_DIR . '/authentication/authenticationprovider.inc.php'); | @@ -33,11 +33,11 @@ require_once(KT_LIB_DIR . '/authentication/authenticationprovider.inc.php'); | ||
| 33 | require_once(KT_LIB_DIR . '/authentication/Authenticator.inc'); | 33 | require_once(KT_LIB_DIR . '/authentication/Authenticator.inc'); |
| 34 | 34 | ||
| 35 | class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | 35 | class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { |
| 36 | - var $sName = "LDAP authentication provider"; | ||
| 37 | - var $sNamespace = "ktstandard.authentication.ldapprovider"; | 36 | + var $sName = 'LDAP authentication provider'; |
| 37 | + var $sNamespace = 'ktstandard.authentication.ldapprovider'; | ||
| 38 | 38 | ||
| 39 | - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile"); | ||
| 40 | - var $aMembershipAttributes = array ("memberOf"); | 39 | + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid'); |
| 40 | + var $aMembershipAttributes = array ('memberOf'); | ||
| 41 | 41 | ||
| 42 | // {{{ KTLDAPBaseAuthenticationProvider | 42 | // {{{ KTLDAPBaseAuthenticationProvider |
| 43 | function KTLDAPBaseAuthenticationProvider() { | 43 | function KTLDAPBaseAuthenticationProvider() { |
| @@ -146,6 +146,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -146,6 +146,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 146 | if (empty($aConfig)) { | 146 | if (empty($aConfig)) { |
| 147 | $aConfig = array('serverport'=>389); | 147 | $aConfig = array('serverport'=>389); |
| 148 | } | 148 | } |
| 149 | + | ||
| 149 | $aConfig['searchattributes'] = KTUtil::arrayGet($aConfig, 'searchattributes', split(',', 'cn,mail,sAMAccountName')); | 150 | $aConfig['searchattributes'] = KTUtil::arrayGet($aConfig, 'searchattributes', split(',', 'cn,mail,sAMAccountName')); |
| 150 | $aConfig['objectclasses'] = KTUtil::arrayGet($aConfig, 'objectclasses', split(',', 'user,inetOrgPerson,posixAccount')); | 151 | $aConfig['objectclasses'] = KTUtil::arrayGet($aConfig, 'objectclasses', split(',', 'user,inetOrgPerson,posixAccount')); |
| 151 | $fields = array(); | 152 | $fields = array(); |
| @@ -210,6 +211,44 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -210,6 +211,44 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 210 | } | 211 | } |
| 211 | $oSource->setConfig(serialize($aConfig)); | 212 | $oSource->setConfig(serialize($aConfig)); |
| 212 | $res = $oSource->update(); | 213 | $res = $oSource->update(); |
| 214 | + | ||
| 215 | + //force a commit here to keep any data entered into the fields | ||
| 216 | + //when redirected to the do_editSourceProvider function above the $oSource object will | ||
| 217 | + //now contain the information entered by the user. | ||
| 218 | + if ($this->bTransactionStarted) { | ||
| 219 | + $this->commitTransaction(); | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + $aErrorOptions = array( | ||
| 223 | + 'redirect_to' => array('editSourceProvider', sprintf('source_id=%d', $oSource->getId())), | ||
| 224 | + ); | ||
| 225 | + $aErrorOptions['message'] = _kt("No server name provided"); | ||
| 226 | + $sName = KTUtil::arrayGet($_REQUEST, 'servername'); | ||
| 227 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 228 | + | ||
| 229 | + $aErrorOptions['message'] = _kt("No Base DN provided"); | ||
| 230 | + $sName = KTUtil::arrayGet($_REQUEST, 'basedn'); | ||
| 231 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 232 | + | ||
| 233 | + $aErrorOptions['message'] = _kt("No Search User provided"); | ||
| 234 | + $sName = KTUtil::arrayGet($_REQUEST, 'searchuser'); | ||
| 235 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 236 | + | ||
| 237 | + $aErrorOptions['message'] = _kt("No Search Password provided"); | ||
| 238 | + $sName = KTUtil::arrayGet($_REQUEST, 'searchpassword'); | ||
| 239 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 240 | + | ||
| 241 | + $aErrorOptions['message'] = _kt("No Search Attributes provided"); | ||
| 242 | + $sName = KTUtil::arrayGet($_REQUEST, 'searchattributes_nls'); | ||
| 243 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 244 | + | ||
| 245 | + $aErrorOptions['message'] = _kt("No Object Classes provided"); | ||
| 246 | + $sName = KTUtil::arrayGet($_REQUEST, 'objectclasses_nls'); | ||
| 247 | + $sName = $this->oValidator->validateString($sName, $aErrorOptions); | ||
| 248 | + | ||
| 249 | + | ||
| 250 | + | ||
| 251 | + | ||
| 213 | $this->successRedirectTo('viewsource', _kt("Configuration updated"), 'source_id=' . $oSource->getId()); | 252 | $this->successRedirectTo('viewsource', _kt("Configuration updated"), 'source_id=' . $oSource->getId()); |
| 214 | } | 253 | } |
| 215 | // }}} | 254 | // }}} |
| @@ -236,10 +275,13 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -236,10 +275,13 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 236 | $this->oValidator->notError($aResults); | 275 | $this->oValidator->notError($aResults); |
| 237 | 276 | ||
| 238 | $sUserName = $aResults[$this->aAttributes[1]]; | 277 | $sUserName = $aResults[$this->aAttributes[1]]; |
| 239 | - // With LDAP, if the 'uid' is null then try using the 'givenname' instead. | ||
| 240 | - // See activedirectoryauthenticationprovider.inc.php and ldapauthenticationprovider.inc.php for details. | ||
| 241 | - if($this->sAuthenticatorClass == "KTLDAPAuthenticator" && empty($sUserName)) { | ||
| 242 | - $sUserName = strtolower($aResults[$this->aAttributes[2]]); | 278 | + |
| 279 | + // If the SAMAccountName is empty then use the UserPrincipalName (UPN) to find the username. | ||
| 280 | + // The UPN is normally the username @ the internet domain | ||
| 281 | + if(empty($sUserName)) { | ||
| 282 | + $sUpn = $aResults[$this->aAttributes[6]]; | ||
| 283 | + $aUpn = explode('@', $sUpn); | ||
| 284 | + $sUserName = $aUpn[0]; | ||
| 243 | } | 285 | } |
| 244 | 286 | ||
| 245 | $fields = array(); | 287 | $fields = array(); |
| @@ -272,7 +314,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -272,7 +314,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 272 | if (empty($name)) { $this->errorRedirectToMain(_kt('You must specify a name for the user.')); } | 314 | if (empty($name)) { $this->errorRedirectToMain(_kt('You must specify a name for the user.')); } |
| 273 | $username = KTUtil::arrayGet($_REQUEST, 'ldap_username'); | 315 | $username = KTUtil::arrayGet($_REQUEST, 'ldap_username'); |
| 274 | if (empty($username)) { $this->errorRedirectToMain(_kt('You must specify a new username.')); } | 316 | if (empty($username)) { $this->errorRedirectToMain(_kt('You must specify a new username.')); } |
| 275 | - | 317 | + |
| 276 | $dupUser =& User::getByUserName($username); | 318 | $dupUser =& User::getByUserName($username); |
| 277 | if(!PEAR::isError($dupUser)) { | 319 | if(!PEAR::isError($dupUser)) { |
| 278 | $this->errorRedirectToMain(_kt("A user with that username already exists")); | 320 | $this->errorRedirectToMain(_kt("A user with that username already exists")); |
| @@ -297,7 +339,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -297,7 +339,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 297 | "authenticationdetails2" => $samaccountname, | 339 | "authenticationdetails2" => $samaccountname, |
| 298 | "password" => "", | 340 | "password" => "", |
| 299 | )); | 341 | )); |
| 300 | - | 342 | + |
| 301 | if (PEAR::isError($oUser) || ($oUser == false)) { | 343 | if (PEAR::isError($oUser) || ($oUser == false)) { |
| 302 | $this->errorRedirectToMain(_kt("failed to create user") . ": " . $oUser->message); | 344 | $this->errorRedirectToMain(_kt("failed to create user") . ": " . $oUser->message); |
| 303 | exit(0); | 345 | exit(0); |
| @@ -314,7 +356,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -314,7 +356,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 314 | $oSource =& KTAuthenticationSource::get($_REQUEST['source_id']); | 356 | $oSource =& KTAuthenticationSource::get($_REQUEST['source_id']); |
| 315 | $oAuthenticator = $this->getAuthenticator($oSource); | 357 | $oAuthenticator = $this->getAuthenticator($oSource); |
| 316 | $aNames = array(); | 358 | $aNames = array(); |
| 317 | - | 359 | + |
| 318 | foreach ($aIds as $sId) { | 360 | foreach ($aIds as $sId) { |
| 319 | $aResults = $oAuthenticator->getUser($sId); | 361 | $aResults = $oAuthenticator->getUser($sId); |
| 320 | $dn = $sId; | 362 | $dn = $sId; |
| @@ -394,16 +436,33 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -394,16 +436,33 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 394 | } | 436 | } |
| 395 | 437 | ||
| 396 | if (is_array($aSearchResults)) { | 438 | if (is_array($aSearchResults)) { |
| 397 | - foreach (array_keys($aSearchResults) as $k) { | 439 | + $aSearchResultsKeys = array_keys($aSearchResults); |
| 440 | + $aSearchDNs = array(); | ||
| 441 | + foreach ($aSearchResultsKeys as $k) { | ||
| 398 | if (is_array($aSearchResults[$k]['cn'])) { | 442 | if (is_array($aSearchResults[$k]['cn'])) { |
| 399 | $aSearchResults[$k]['cn'] = $aSearchResults[$k]['cn'][0]; | 443 | $aSearchResults[$k]['cn'] = $aSearchResults[$k]['cn'][0]; |
| 400 | } | 444 | } |
| 445 | + $aSearchDNs[$k] = "'".$aSearchResults[$k]['dn']."'"; | ||
| 446 | + } | ||
| 447 | + | ||
| 448 | + $sDNs = implode(',', $aSearchDNs); | ||
| 449 | + $query = "SELECT id, authentication_details_s1 AS dn FROM users | ||
| 450 | + WHERE authentication_details_s1 IN ($sDNs)"; | ||
| 451 | + $aCurUsers = DBUtil::getResultArray($query); | ||
| 452 | + | ||
| 453 | + // If the user has already been added, then remove from the list | ||
| 454 | + if(!PEAR::isError($aCurUsers) && !empty($aCurUsers)){ | ||
| 455 | + foreach($aCurUsers as $item){ | ||
| 456 | + $key = array_search("'".$item['dn']."'", $aSearchDNs); | ||
| 457 | + $aKeys[] = $key; | ||
| 458 | + unset($aSearchResults[$key]); | ||
| 459 | + } | ||
| 401 | } | 460 | } |
| 402 | } | 461 | } |
| 403 | } | 462 | } |
| 404 | 463 | ||
| 405 | $massimport = KTUtil::arrayGet($_REQUEST, 'massimport'); | 464 | $massimport = KTUtil::arrayGet($_REQUEST, 'massimport'); |
| 406 | - | 465 | + |
| 407 | $aTemplateData = array( | 466 | $aTemplateData = array( |
| 408 | 'context' => &$this, | 467 | 'context' => &$this, |
| 409 | 'fields' => $fields, | 468 | 'fields' => $fields, |
| @@ -445,7 +504,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -445,7 +504,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 445 | $oAuthenticator = $this->getAuthenticator($oSource); | 504 | $oAuthenticator = $this->getAuthenticator($oSource); |
| 446 | $aSearchResults = $oAuthenticator->searchGroups($name); | 505 | $aSearchResults = $oAuthenticator->searchGroups($name); |
| 447 | } | 506 | } |
| 448 | - | 507 | + |
| 449 | $aTemplateData = array( | 508 | $aTemplateData = array( |
| 450 | 'context' => &$this, | 509 | 'context' => &$this, |
| 451 | 'fields' => $fields, | 510 | 'fields' => $fields, |
| @@ -467,7 +526,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -467,7 +526,7 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 467 | 526 | ||
| 468 | $oAuthenticator = $this->getAuthenticator($oSource); | 527 | $oAuthenticator = $this->getAuthenticator($oSource); |
| 469 | $aAttributes = $oAuthenticator->getGroup($id); | 528 | $aAttributes = $oAuthenticator->getGroup($id); |
| 470 | - | 529 | + |
| 471 | $fields = array(); | 530 | $fields = array(); |
| 472 | $fields[] = new KTStaticTextWidget(_kt('LDAP DN'), _kt('The location of the group within the LDAP directory.'), 'dn', $aAttributes['dn'], $this->oPage); | 531 | $fields[] = new KTStaticTextWidget(_kt('LDAP DN'), _kt('The location of the group within the LDAP directory.'), 'dn', $aAttributes['dn'], $this->oPage); |
| 473 | $fields[] = new KTStringWidget(_kt('Group Name'), sprintf(_kt('The name the group will enter to gain access to %s. e.g. <strong>accountants</strong>'), APP_NAME), 'ldap_groupname', $aAttributes['cn'], $this->oPage, true); | 532 | $fields[] = new KTStringWidget(_kt('Group Name'), sprintf(_kt('The name the group will enter to gain access to %s. e.g. <strong>accountants</strong>'), APP_NAME), 'ldap_groupname', $aAttributes['cn'], $this->oPage, true); |
| @@ -565,10 +624,18 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | @@ -565,10 +624,18 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider { | ||
| 565 | } | 624 | } |
| 566 | 625 | ||
| 567 | function _createSignupGroups($dn, $oSource) { | 626 | function _createSignupGroups($dn, $oSource) { |
| 627 | + | ||
| 628 | + $config = KTConfig::getSingleton(); | ||
| 629 | + $createGroups = $config->get('ldapAuthentication/autoGroupCreation', true); | ||
| 630 | + if (!$createGroups) | ||
| 631 | + { | ||
| 632 | + return; | ||
| 633 | + } | ||
| 634 | + | ||
| 568 | $oAuthenticator =& $this->getAuthenticator($oSource); | 635 | $oAuthenticator =& $this->getAuthenticator($oSource); |
| 569 | $aGroupDNs = $oAuthenticator->getGroups($dn); | 636 | $aGroupDNs = $oAuthenticator->getGroups($dn); |
| 570 | if(PEAR::isError($aGroupDNs) || empty($aGroupDNs)) return; | 637 | if(PEAR::isError($aGroupDNs) || empty($aGroupDNs)) return; |
| 571 | - | 638 | + |
| 572 | foreach ($aGroupDNs as $sGroupDN) { | 639 | foreach ($aGroupDNs as $sGroupDN) { |
| 573 | $oGroup = Group::getByAuthenticationSourceAndDetails($oSource, $sGroupDN); | 640 | $oGroup = Group::getByAuthenticationSourceAndDetails($oSource, $sGroupDN); |
| 574 | if (PEAR::isError($oGroup)) { | 641 | if (PEAR::isError($oGroup)) { |
| @@ -630,7 +697,7 @@ class KTLDAPBaseAuthenticator extends Authenticator { | @@ -630,7 +697,7 @@ class KTLDAPBaseAuthenticator extends Authenticator { | ||
| 630 | $this->bTls = KTUtil::arrayGet($aConfig, 'tls', false); | 697 | $this->bTls = KTUtil::arrayGet($aConfig, 'tls', false); |
| 631 | 698 | ||
| 632 | if ($this->iLdapPort + 0 == 0) $this->iLdapPort=389; // some basic validation in case port is blank or 0 | 699 | if ($this->iLdapPort + 0 == 0) $this->iLdapPort=389; // some basic validation in case port is blank or 0 |
| 633 | - | 700 | + |
| 634 | require_once('Net/LDAP.php'); | 701 | require_once('Net/LDAP.php'); |
| 635 | $config = array( | 702 | $config = array( |
| 636 | 'dn' => $this->sSearchUser, | 703 | 'dn' => $this->sSearchUser, |
| @@ -672,7 +739,7 @@ class KTLDAPBaseAuthenticator extends Authenticator { | @@ -672,7 +739,7 @@ class KTLDAPBaseAuthenticator extends Authenticator { | ||
| 672 | } | 739 | } |
| 673 | 740 | ||
| 674 | function checkSignupPassword($sUsername, $sPassword) { | 741 | function checkSignupPassword($sUsername, $sPassword) { |
| 675 | - | 742 | + |
| 676 | if(empty($sPassword) || empty($sUsername)) { | 743 | if(empty($sPassword) || empty($sUsername)) { |
| 677 | return false; | 744 | return false; |
| 678 | } | 745 | } |
| @@ -891,3 +958,4 @@ class KTLDAPBaseAuthenticator extends Authenticator { | @@ -891,3 +958,4 @@ class KTLDAPBaseAuthenticator extends Authenticator { | ||
| 891 | } | 958 | } |
| 892 | } | 959 | } |
| 893 | 960 | ||
| 961 | +?> | ||
| 894 | \ No newline at end of file | 962 | \ No newline at end of file |
templates/ktstandard/authentication/ldapadduser.smarty
| @@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
| 10 | <input type="hidden" name="dn" value="{$dn}" /> | 10 | <input type="hidden" name="dn" value="{$dn}" /> |
| 11 | <input type="hidden" name="samaccountname" value="{$samaccountname}" /> | 11 | <input type="hidden" name="samaccountname" value="{$samaccountname}" /> |
| 12 | <div class="form_actions"> | 12 | <div class="form_actions"> |
| 13 | - <input type="submit" name="submit[create]" value="{i18n}create user{/i18n}" /> | 13 | + <input type="submit" name="submit[create]" value="{i18n}Create user{/i18n}" /> |
| 14 | <input type="submit" name="kt_cancel[]" value="{i18n}Cancel{/i18n}" /> | 14 | <input type="submit" name="kt_cancel[]" value="{i18n}Cancel{/i18n}" /> |
| 15 | </div> | 15 | </div> |
| 16 | </fieldset> | 16 | </fieldset> |