-
-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] Wrong handling of orWhere
in emulator
#606
Comments
Thanks @acharseth, apologies for the long reply here. Yes I agree, the emulator is the one not working properly. The query builder is working as expected. I'm able to reproduce this locally. Working on a patch -- haven't found a solution yet. Will report here once I do 👍 |
orWhere
in emulator
Hi @stevebauman, I have the same problem with orWhereContains. I have a query
If I use
The equivalent query (a bit more complex in my application) seems to work querying the real AD directory but not in the emulator, making it difficult to test. I am hoping your patch when it comes will handle |
Scratch that, that was resolving a different issue. Will look at this this week 👍 |
I've discovered the issue of this, and it's due to how and when global scopes are applied (in the Though as a workaround, I've discovered you can resolve this by nesting the $query->andFilter(function ($query) {
$query->orWhere('memberof', '=', 'cn=Group1');
$query->orWhere('memberof', '=', 'cn=Group2');
$query->orWhere('memberof', '=', 'cn=Group3');
}); This is still a bug though, but I know why and where it's happening so I'll keep you updated here 👍 |
@stevebauman, it could be unrelated, but this Laravel issue titled "[11.28.0] ->orWhere() behaviour changed with array input" could be of interest: laravel/framework#53184. |
Environment:
Describe the bug:
I wanted a scope requiring to be member of one or more groups.
I therefore created a scope with an initial
where
for one group and two moreorWhere
for 2 other groups. Something like this:With experience from SQL this makes sense but does not in LDAP.
This creates the following LDAP filter (as decoded from the log):
This means that you have to be member of both Group1 and (Group2 or Groups 3), which is not what I intended. Still using the built in LDAP emulator I could be member of eg. Group3 only and still get included. In the test environment, however, I did not get included. The correct implementation for the scope is to use orWhere on all 3 groups like this:
This will create a correct LDAP-filter:
To my understanding ActiveDirectoy has a correct implementation of the filter and the built in emulator does not.
Agree?
The text was updated successfully, but these errors were encountered: