LdapRecord-Laravel Return Empty Results

Created on 23 Jan 2020  Â·  29Comments  Â·  Source: DirectoryTree/LdapRecord-Laravel

Laravel Version: 6.2
PHP Version: 7.3
LDAP Type: ActiveDirectory

For some reason when I set up LdapRecord without Laravel I get results, however, when I connect in a Laravel project I get an empty result.

This is my configuration for LDAP record stand alone that returns my record in AD as expected:

<?php

use LdapRecord\Connection;
require __DIR__ . '/vendor/autoload.php';
$config = [
    // Mandatory Configuration Options
    'hosts'            => ['xx.xx.xx.x'],
    'base_dn'          => 'DC=comlivserv,DC=com',
    'username'         => '[email protected]',
    'password'         => 'xxxxxxxxxx',
     'use_ssl'          => true,
];

$connection = new Connection($config);

try {
    $connection->connect();
    echo "Successfully connected!";
} catch (\LdapRecord\Auth\BindException $e) {
    $error = $e->getDetailedError();

    echo $error->getErrorCode();
    echo $error->getErrorMessage();
    echo $error->getDiagnosticMessage();
}
$query = $connection->query();
$results = $connection->query()->where('cn', '=', 'Tyler, Casey')->get();
echo '<pre>';
print_r($results);
echo '</pre>';
?>

However, when I add the same info to my Laravel project:

LDAP_LOGGING=true
LDAP_CONNECTION=default
LDAP_HOST=xx.xx.xx.xx
LDAP_USERNAME="[email protected]"
LDAP_PASSWORD=xxxxxxxxxx
LDAP_PORT=636
LDAP_BASE_DN="dc=comlivserv,dc=com"
LDAP_TIMEOUT=5
LDAP_SSL=true
LDAP_TLS=false

I create my user model using: php artisan make:ldap-model User

Here is the model:

namespace App\Ldap;

use LdapRecord\Models\ActiveDirectory\Entry;

class User extends Entry
{
    public static $objectClasses = [
        'top',
        'person',
        'organizationalperson',
        'user',
    ];

    //protected $connection = 'default';
}

Now in my web.php route file i add:

use App\Ldap\User;

Route::get('/', function () {
    //$users = User::get();
    //$users = User::where('givenName', '=', 'Casey')->get();
    //$user = User::find('cn=Tyler/, Casey,dc=comlivserv,dc=com');
   //$user = User::findByAnr('ctyler');
    $user = User::findByOrFail('samaccountname', 'ctyler');
    dd($user);
    return view('welcome');
});

All of the comment queries returned no results. This uncommented one is returning:
LdapRecord\Models\ModelNotFoundException
No LDAP query results for filter: [(&(objectclass=top)(objectclass=person)(objectclass=organizationalperson)(objectclass=user)(samaccountname=ctyler))] in: [dc=comlivserv,dc=com]

Any help would be appreciated.

ActiveDirectory question

All 29 comments

Hi @ctyler69, can you enable logging and then paste what is generated in them after running a query?

Here is what I am getting in my laravel.log file
[2020-01-23 20:18:17] local.INFO: LDAP (ldap://10.6.1.12:389) - Operation: Paginate - Base DN: dc=comlivserv,dc=com - Filter: (&(objectclass=top)(objectclass=person)(objectclass=organizationalperson)(objectclass=user)) - Selected: (*) - Time Elapsed: 15.59

Is that it? Are there any connection logs at all?

It look likes like the log file was deleted so I connected and that is all that the log file is showing when I run a query showing. Should connection info be logged with each query.

Yes, the following should be shown per request to bind to your LDAP server:

[2020-01-24 13:52:25] local.INFO: LDAP (ldap://localhost:389) - Operation: Binding - Username: CN=local-admin,DC=local,DC=com  
[2020-01-24 13:52:25] local.INFO: LDAP (ldap://localhost:389) - Operation: Bound - Username: CN=local-admin,DC=local,DC=com  
[2020-01-24 13:52:25] local.INFO: LDAP (ldap://localhost:389) - Operation: Paginate - Base DN: dc=local,dc=com - Filter: (&(objectclass=top)(objectclass=person)(objectclass=organizationalperson)(objectclass=user)) - Selected: (objectclass) - Time Elapsed: 37.63 

I duplicated your code in my web routes file and I received the logs normally in my storage/logs directory. This is on a completely fresh instance of Laravel.

It is. Maybe I did something setting it up. Maybe I should wipe it out, and go through the set up again and see if I am still having the same issues. The reason I am leaning that way is because the Ldaprecord standalone is working fine and returning records. That is on the same server. I will do that this morning and let you know what I find. Is that ok?

Did you publish the LdapRecord-Laravel config files?

Also, yup absolutely, whatever testing you can do will help me help you to get you up and running :smile:

Yes, I walked right through the installation instructions.
I will wipe it now and go through it again. I really appreciate your help @stevebauman!

Ok, my install instructions are still somewhat incomplete, so this may be my error (don't want to leave that out of the question lol).

Always happy to help @ctyler69!

Ok. I am still running into the same issue. If I set to SSL to false get:
[previous exception] [object] (ErrorException(code: 2): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Ldap.php:842)
along with the stack trace;
If I change it back I get:
[2020-01-24 19:07:22] local.INFO: LDAP (ldaps://obrien.comlivserv.com:636) - Operation: Search - Base DN: DC=comlivserv,DC=com - Filter: (company=CLS) - Selected: (*) - Time Elapsed: 19.92
With no connection info like yours:

So I reinstalled everything: laravel and LdapRecord

I published the config files via:
php artisan vendor:publish --provider="LdapRecord\Laravel\LdapServiceProvider"

I created the User Model:
php artisan make:ldap-model User

Added the $objectclass:

I added the same info:
LDAP_LOGGING=true
LDAP_CONNECTION=default
LDAP_HOST=xxxxxx.comlivserv.com
LDAP_USERNAME="[email protected]"
LDAP_PASSWORD="XXXXXXXXX"
LDAP_PORT=636
LDAP_BASE_DN="DC=comlivserv,DC=com"
LDAP_TIMEOUT=5
LDAP_SSL=true
LDAP_TLS=false

Added
'
Route::get('/', function () {
$users = User::where('company', '=', 'CLS')->get();
dd($users);
return view('welcome');
});
'
All I am getting is:
LdapRecord\Query\Collection {#320 â–¼ #items: [] }
No connection info in the logs.

I am stumped. I feel like I am missing a step.

That's truly bizarre, I've replicated your env configuration in my production LDAP environment and I'm getting connection logs just fine when using SSL:

[2020-01-25 19:39:22] local.INFO: LDAP (ldaps://xxx.xxx.xxx.xxx:636) - Operation: Binding - Username: [email protected]  
[2020-01-25 19:39:22] local.INFO: LDAP (ldaps://xxx.xxx.xxx.xxx:636) - Operation: Bound - Username: [email protected]
[2020-01-25 19:39:22] local.INFO: LDAP (ldaps://xxx.xxx.xxx.xxx:636) - Operation: Paginate - Base DN: dc=localhost,dc=com - Filter: (&(objectclass=top)(objectclass=person)(objectclass=organizationalperson)(objectclass=user)) - Selected: (objectclass) - Time Elapsed: 518.26  

I find it strange that it's logging your SSL host connection here:

[2020-01-24 19:07:22] local.INFO: LDAP (ldaps://obrien.comlivserv.com:636) - Operation: Search - Base DN: DC=comlivserv,DC=com - Filter: (company=CLS) - Selected: (*) - Time Elapsed: 19.92

But it isn't outputting the initial bind attempts...

I'm unable to reproduce this issue on my end. Can you post your composer.json file?

Here it is:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.2",
        "directorytree/ldaprecord-laravel": "dev-master",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^1.1",
        "spatie/laravel-permission": "^3.6"
    },
    "require-dev": {
        "facade/ignition": "^1.4",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}

Okay, everything looks totally fine there.

Can you try retrieving all records using one of the built-in Entry models shown below and let me know if you are able to retrieve results?

For example inside of your routes file:

// routes/web.php

Route::get('/', function () {
    $objects = \LdapRecord\Models\Entry::get();

    dd($objects);
});

Done. The log info:

[2020-01-27 15:53:29] local.INFO: LDAP (ldaps://obrien.comlivserv.com:636) - Operation: Paginate - Base DN: DC=comlivserv,DC=com - Filter: (objectclass=) - Selected: () - Time Elapsed: 333.17

Again no connection info.
This is what is returned:

LdapRecord\Query\Collection {#320 â–¼
#items: array:1 [â–¼
0 => LdapRecord\ModelsEntry {#334 â–¼
+exists: true
#dn: "DC=comlivserv,DC=com"
#in: null
#connection: null
#guidKey: "objectguid"
#modifications: []
#original: []
#attributes: []
#dates: []
#defaultDates: array:2 [â–¼
"createtimestamp" => "ldap"
"modifytimestamp" => "ldap"
]
}
]
}
So I decided to try giving a wrong password. Exact same results as above. No error.

So then added:

Route::get('/', function () {
Artisan::call('cache:clear');
Artisan::call('config:clear');
$users = \LdapRecord\ModelsEntry::all();
dd($users);

Just to make sure Laravel was not caching anything. Came up with the same as above.

So then I gave a wrong IP that came back with:

ldap_bind(): Unable to bind to server: Can't contact LDAP server
Message logged:
[2020-01-27 16:12:32] local.INFO: LDAP (ldaps://10.6.1.0:636) - Operation: Binding - Username: [email protected]
[2020-01-27 16:12:35] local.WARNING: LDAP (ldaps://10.6.1.0:636) - Operation: Failed - Username: [email protected] - Reason: Can't contact LDAP server
[2020-01-27 16:12:35] local.INFO: LDAP (ldaps://10.6.1.0:636) - Operation: Binding - Username: [email protected]
[2020-01-27 16:12:38] local.WARNING: LDAP (ldaps://10.6.1.0:636) - Operation: Failed - Username: [email protected] - Reason: Can't contact LDAP server
[2020-01-27 16:12:38] local.ERROR: ldap_bind(): Unable to bind to server: Can't contact LDAP server {"exception":"[object] (LdapRecord\Auth\BindException(code: 2): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Auth/Guard.php:127)
[stacktrace]

0 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Auth/Guard.php(143): LdapRecord\Auth\Guard->bind('xxxxxx@comlivs...', 'xxxxxxxxxxx')

1 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(169): LdapRecord\Auth\Guard->bindAsConfiguredUser()

2 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(189): LdapRecord\Connection->connect()

3 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(283): LdapRecord\Connection->reconnect()

4 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(214): LdapRecord\Connection->tryAgainIfCausedByLostConnection(Object(LdapRecord\LdapRecordException), Object(Closure))

5 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(536): LdapRecord\Connection->run(Object(Closure))

6 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(401): LdapRecord\Query\Builder->runPaginate('(objectclass=*)', 1000, true)

7 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(470): LdapRecord\Query\Builder->LdapRecord\Query\{closure}()

8 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(404): LdapRecord\Query\Builder->getCachedResponse('(objectclass=*)', Object(Closure))

9 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Models/Model.php(257): LdapRecord\Query\Builder->paginate()

10 /var/www/html/dev-cls-admin-com/routes/web.php(22): LdapRecord\Models\Model::all()

11 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\RouteFileRegistrar->{closure}()

12 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(179): Illuminate\Routing\Route->runCallable()

13 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\Routing\Route->run()

14 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

15 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

16 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))

17 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(76): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

18 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))

19 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

20 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))

21 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

22 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))

23 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

24 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))

25 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

26 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))

27 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

28 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(683): Illuminate\Pipeline\Pipeline->then(Object(Closure))

29 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))

30 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(624): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))

31 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(613): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))

32 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))

33 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))

34 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

35 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

36 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

37 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

38 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

39 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))

40 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

41 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))

42 /var/www/html/dev-cls-admin-com/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

43 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))

44 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

45 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Pipeline\Pipeline->then(Object(Closure))

46 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))

47 /var/www/html/dev-cls-admin-com/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))

48 {main}

[previous exception] [object] (ErrorException(code: 2): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Ldap.php:842)
[stacktrace]

0 [internal function]: LdapRecord\Ldap->LdapRecord\{closure}(2, 'ldap_bind(): Un...', '/var/www/html/d...', 842, Array)

1 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Ldap.php(842): ldap_bind(Resource id #20, 'xxxxxx@comlivs...', 'xxxxxxxxxxx')

2 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Ldap.php(522): LdapRecord\Ldap->executeFailableOperation('ldap_bind', Resource id #20, 'xxxxxx@comlivs...', 'xxxxxxxxxxx')

3 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Auth/Guard.php(119): LdapRecord\Ldap->bind('xxxxxx@comlivs...', 'xxxxxxxxxxx')

4 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Auth/Guard.php(143): LdapRecord\Auth\Guard->bind('xxxxxx@comlivs...', 'xxxxxxxxxxx')

5 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(169): LdapRecord\Auth\Guard->bindAsConfiguredUser()

6 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(189): LdapRecord\Connection->connect()

7 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(283): LdapRecord\Connection->reconnect()

8 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Connection.php(214): LdapRecord\Connection->tryAgainIfCausedByLostConnection(Object(LdapRecord\LdapRecordException), Object(Closure))

9 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(536): LdapRecord\Connection->run(Object(Closure))

10 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(401): LdapRecord\Query\Builder->runPaginate('(objectclass=*)', 1000, true)

11 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(470): LdapRecord\Query\Builder->LdapRecord\Query\{closure}()

12 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Query/Builder.php(404): LdapRecord\Query\Builder->getCachedResponse('(objectclass=*)', Object(Closure))

13 /var/www/html/dev-cls-admin-com/vendor/directorytree/ldaprecord/src/Models/Model.php(257): LdapRecord\Query\Builder->paginate()

14 /var/www/html/dev-cls-admin-com/routes/web.php(22): LdapRecord\Models\Model::all()

15 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\RouteFileRegistrar->{closure}()

16 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(179): Illuminate\Routing\Route->runCallable()

17 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\Routing\Route->run()

18 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

19 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

20 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))

21 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(76): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

22 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))

23 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

24 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))

25 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

26 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))

27 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

28 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))

29 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

30 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))

31 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

32 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(683): Illuminate\Pipeline\Pipeline->then(Object(Closure))

33 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))

34 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(624): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))

35 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(613): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))

36 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))

37 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))

38 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

39 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

40 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

41 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

42 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

43 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))

44 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

45 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))

46 /var/www/html/dev-cls-admin-com/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

47 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))

48 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

49 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Pipeline\Pipeline->then(Object(Closure))

50 /var/www/html/dev-cls-admin-com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))

51 /var/www/html/dev-cls-admin-com/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))

52 {main}

"}

Can you run composer update to pull in the latest LdapRecord-Laravel and then run the following command:

php artisan ldap:test

Then post the results?

Testing LDAP connection [default]...
+------------+------------+-------------------------+
| Connection | Successful | Message |
+------------+------------+-------------------------+
| default | ✔ Yes | Successfully connected. |
+------------+------------+-------------------------+

So bizarre. Can you try retrieving your RootDSE via:

Route::get('/', function () {
    dd(\LdapRecord\Models\Entry::read()->first());
}

Also, try getting the connection from the model and see if it's connected:

Route::get('/', function () {
    $entry = new\LdapRecord\Models\Entry;

    dd($entry->getConnection());
}

If this doesn't work, I'm honestly dumbfounded. I'm unable to reproduce this. You will need to do some digging in the vendor/directorytree/ldaprecord/src folder and start debugging...

dd(\LdapRecord\ModelsEntry::read()->first());

Results:
LdapRecord\ModelsEntry {#337 â–¼
+exists: true
#dn: "DC=comlivserv,DC=com"
#in: null
#connection: null
#guidKey: "objectguid"
#modifications: []
#original: []
#attributes: []
#dates: []
#defaultDates: array:2 [â–¼
"createtimestamp" => "ldap"
"modifytimestamp" => "ldap"
]
}
Log:
[2020-01-27 17:50:49] local.INFO: LDAP (ldaps://10.6.1.12:636) - Operation: Paginate - Base DN: DC=comlivserv,DC=com - Filter: (objectclass=) - Selected: () - Time Elapsed: 185.3
[2020-01-27 17:50:49] local.INFO: LDAP (ldaps://10.6.1.12:636) - Operation: Read - Base DN: DC=comlivserv,DC=com - Filter: (objectclass=) - Selected: () - Time Elapsed: 22.31

$entry = new\LdapRecord\ModelsEntry;
dd($entry->getConnection());

Return:

LdapRecord\Connection {#151 â–¼
#ldap: LdapRecord\Ldap {#153 â–¼
#host: "ldaps://10.6.1.12:636"
#connection: ldap link resource @6
#bound: false
#useSSL: true
#useTLS: false
}
#configuration: LdapRecord\Configuration\DomainConfiguration {#152 â–¼
#options: array:11 [â–¼
"hosts" => array:1 [â–¶]
"timeout" => "5"
"version" => 3
"port" => "636"
"base_dn" => "DC=comlivserv,DC=com"
"username" => "[email protected]"
"password" => "xxxxxxxxxxxx"
"use_ssl" => true
"use_tls" => false
"follow_referrals" => false
"options" => []
]
}
#cache: null
}

Log:

[2020-01-27 17:54:01] local.INFO: LDAP (ldaps://10.6.1.12:636) - Operation: Paginate - Base DN: DC=comlivserv,DC=com - Filter: (objectclass=) - Selected: () - Time Elapsed: 325.63

Bound is showing false here:

LdapRecord\Connection {#151 â–¼
#ldap: LdapRecord\Ldap {#153 â–¼
#host: "ldaps://10.6.1.12:636"
#connection: ldap link resource @6
#bound: false
#useSSL: true
#useTLS: false
}

Inside of your application, are you adding any connections to the LdapRecord\Container manually at all?

I am not sure how. I installed Ldap-Record, published the config/ldap.php and then added the ldap connection in into .env. That is all that is needed to connect, correct? So the only files that have been modified is the .env and web.php

This may be related to https://github.com/DirectoryTree/LdapRecord/issues/64.

Can you try:

$conn = \LdapRecord\Container::getDefaultConnection();

$conn->connect();

$objects = \LdapRecord\Models\Entry::get();

dd($objects);

That returned 1000 + objects.
LdapRecord\Query\Collection {#323 â–¼
#items: array:1000 [â–¶]
}

Great! We're making progress. I've resolved this in the core with the latest release.

Can you run composer update, and then try simply (removed manually connecting from previous snippet and used paginate instead of get):

$objects = \LdapRecord\Models\Entry::paginate();

dd($objects);

Still working:
LdapRecord\Query\Collection {#320 â–¼
#items: array:5775 [â–¶]
}

Awesome! 🎉 Pagination is working now as well (over 1000 records being returned). You're all set! :smile:

Appreciate you working with me on this.

Are you kidding. It would have taken me FOREVER to do this from scratch.
Thank you so much for your help!

Wow thanks so much for your kind words! I'm really glad that you like it :smile:

I'm always happy to help whenever I can, feel free to create more issues if needed.

Was this page helpful?
0 / 5 - 0 ratings