Skip to content

Commit

Permalink
Fixed isMemberOf and inMembers for multiple groups
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasmarotta committed Dec 10, 2019
1 parent b69fbd1 commit 08764a5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
11 changes: 8 additions & 3 deletions src/Models/Group.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,21 +138,26 @@ public function inMembers($user)
if ($members === null) {
return false;
}
return boolval(array_filter($members, function ($dn) use ($user) {
$equals = boolval(array_filter($members, function ($dn) use ($user) {
if (isset($user->getDn)) {
return $user->getDn()->equals($dn);
}

return $user->equals($dn);
}));
if ($equals) {
return true;
}
} elseif (is_string($user)) {
$members = $this->getMembers();
if ($members === null) {
return false;
}
$user = trim(strtolower($user));

return (array_search($user, array_map('strtolower', $members)) !== false);
$equals = (array_search($user, array_map('strtolower', $members)) !== false);
if ($equals) {
return true;
}
} else {
throw new ModelException('group must be a string or a instance of' . DistinguishedName::class . ' or ' . User::class);
}
Expand Down
13 changes: 9 additions & 4 deletions src/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -466,21 +466,26 @@ public function isMemberOf($group)
if ($memberOf === null) {
return false;
}
return boolval(array_filter($memberOf, function ($dn) use ($group) {
$equals = array_filter($memberOf, function ($dn) use ($group) {
if (isset($group->getDn)) {
return $group->getDn()->equals($dn);
}

return $group->equals($dn);
}));
});
if ($equals) {
return true;
}
} elseif (is_string($group)) {
$memberOf = $this->getMemberOf();
if ($memberOf === null) {
return false;
}
$group = trim(strtolower($group));

return (array_search($group, array_map('strtolower', $memberOf)) !== false);
$equals = (array_search($group, array_map('strtolower', $memberOf)) !== false);
if ($equals) {
return true;
}
} else {
throw new ModelException('group must be a string or a instance of' . DistinguishedName::class);
}
Expand Down

0 comments on commit 08764a5

Please sign in to comment.