Attached a patch with a new query for CompiereService.checkLogin method (also converted from String to StringBuilder).
I think the query is ok, but something else need to be changed because when the role is IsUseUserOrgAccess=Y (and orgs defined at user level), I got those warnings in log :
07:29:32.174===========> MRole.getClientWhere: No Access Org records 
07:29:32.195===========> MRole.getOrgWhere: No Access Org records 
And I cannot find the reason
I also join the WS I'm using and the request.
Steps to reproduce :
If the GW / Web Service Execution role is :
IsAccessAllOrgs = Y => OK
IsUseUserOrgAccess = N (and org(s) defined on the role) => OK
IsUseUserOrgAccess = Y (and org(s) defined on the user) => KO (No Access Org records)
Any idea where to look ?
, worked fine in my tests - I found similar issue, but was wrong definition on my side (org=0, warehouse<>0)