. */ namespace SP\Providers\Auth\Ldap; /** * Class LdapUtil * * @package SP\Auth\Ldap */ final class LdapUtil { /** * Escapar carácteres especiales en el RDN de LDAP. * * @param string $dn con el RDN del usuario * * @return string */ public static function escapeLdapDN(string $dn): string { $chars = [ '/(,)(?!uid|cn|ou|dc)/i', '/(?\+#\/]+)/', '/\G(\s)/', '/(\s)(?=\s*$)/' ]; return preg_replace($chars, '\\\1', $dn); } /** * Obtener el nombre del grupo a partir del CN * * @param string $group * * @return bool|string */ public static function getGroupName(string $group) { if (preg_match('/^cn=(?[^,]+),.*/i', $group, $matches)) { return $matches['groupname']; } return false; } /** * @param array $attributes * @param string $value * * @return string */ public static function getAttributesForFilter(array $attributes, string $value): string { $value = ldap_escape((string)$value, null, LDAP_ESCAPE_FILTER); return implode( '', array_map(function ($attribute) use ($value) { return sprintf('(%s=%s)', $attribute, $value); }, $attributes) ); } }