Skip to content

Commit

Permalink
#379 make sure that wildcards are resolved
Browse files Browse the repository at this point in the history
  • Loading branch information
gruberroland committed Oct 31, 2024
1 parent 14fc027 commit 7102d13
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 13 deletions.
1 change: 1 addition & 0 deletions lam/HISTORY
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ December 2024 9.0
- Fixed bugs:
-> Windows: show more than 1000 LDAP entries when paged results is activated in server profile
-> WebAuthn: support DNs larger than 64 bytes (358)
-> Wildcard replacements do not work without switching to the module tab (379)


24.09.2024 8.9
Expand Down
10 changes: 10 additions & 0 deletions lam/lib/baseModule.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1228,6 +1228,7 @@ abstract class baseModule {
* @return array list of modifications
*/
public function save_attributes() {
$this->getAccountContainer()->replaceWildcardsInArray($this->getWildcardTargetAttributeNames(), $this->attributes);
return $this->getAccountContainer()->save_module_attributes($this->attributes, $this->orig);
}

Expand Down Expand Up @@ -2365,6 +2366,15 @@ abstract class baseModule {
return [];
}

/**
* Returns a list of attribute names that may contain wildcards.
*
* @return array list of attribute names
*/
public function getWildcardTargetAttributeNames(): array {
return [];
}

/**
* Returns a callable if there should be a custom filtering for the given attribute name.
*
Expand Down
28 changes: 15 additions & 13 deletions lam/lib/modules/inetOrgPerson.inc
Original file line number Diff line number Diff line change
Expand Up @@ -892,7 +892,7 @@ class inetOrgPerson extends baseModule implements passwordService, AccountStatus
if (!$this->getAccountContainer()->isNewAccount && !in_array('inetOrgPerson', $this->getAccountContainer()->attributes_orig['objectClass'])) {
return [];
}
$return = $this->getAccountContainer()->save_module_attributes($this->attributes, $this->orig);
$return = parent::save_attributes();
// postalAddress, registeredAddress, facsimileTelephoneNumber and jpegPhoto need special removing
if (isset($return[$this->getAccountContainer()->dn_orig]['remove']['postalAddress'])) {
$return[$this->getAccountContainer()->dn_orig]['modify']['postalAddress'] = $this->attributes['postalAddress'];
Expand Down Expand Up @@ -999,12 +999,7 @@ class inetOrgPerson extends baseModule implements passwordService, AccountStatus
*/
function process_attributes() {
$errors = [];
$keysToReplace = ['mail', 'description', 'postalAddress', 'cn',
'registeredAddress', 'labeledURI'];
if ($this->isUnixActive()) {
$keysToReplace[] = 'uid';
}
$this->getAccountContainer()->replaceWildcardsInPOST($keysToReplace);
$this->getAccountContainer()->replaceWildcardsInPOST($this->getWildcardTargetAttributeNames());
// add parent object classes
if ($this->getAccountContainer()->isNewAccount) {
if (!in_array('organizationalPerson', $this->attributes['objectClass'])) {
Expand Down Expand Up @@ -1218,12 +1213,7 @@ class inetOrgPerson extends baseModule implements passwordService, AccountStatus
*/
function display_html_attributes() {
$this->initCache();
$keysToReplace = ['mail', 'description', 'postalAddress', 'uid', 'cn',
'registeredAddress', 'labeledURI'];
if ($this->isUnixActive()) {
$keysToReplace[] = 'uid';
}
$this->getAccountContainer()->replaceWildcardsInArray($keysToReplace, $this->attributes);
$this->getAccountContainer()->replaceWildcardsInArray($this->getWildcardTargetAttributeNames(), $this->attributes);
$container = new htmlResponsiveRow();
$fieldContainer = new htmlResponsiveRow();
$fieldTabletColumns = $this->isBooleanConfigOptionSet('inetOrgPerson_hidejpegPhoto') ? 12 : 8;
Expand Down Expand Up @@ -3888,6 +3878,18 @@ class inetOrgPerson extends baseModule implements passwordService, AccountStatus
return in_array('sambaSamAccount', $modules);
}

/**
* {@inheritdoc}
*/
public function getWildcardTargetAttributeNames(): array {
$attributeNames = ['mail', 'description', 'postalAddress', 'uid', 'cn',
'registeredAddress', 'labeledURI'];
if ($this->isUnixActive()) {
$attributeNames[] = 'uid';
}
return $attributeNames;
}

/**
* {@inheritdoc}
*/
Expand Down

0 comments on commit 7102d13

Please sign in to comment.