Kaynağa Gözat

Update adldap2/adldap2 to 10.3.0

CauseFX 5 yıl önce
ebeveyn
işleme
76e6f88326
26 değiştirilmiş dosya ile 350 ekleme ve 69 silme
  1. 7 7
      api/composer.lock
  2. 2 2
      api/vendor/adldap2/adldap2/composer.json
  3. 19 0
      api/vendor/adldap2/adldap2/docs/models/organization.md
  4. 17 10
      api/vendor/adldap2/adldap2/docs/searching.md
  5. 61 1
      api/vendor/adldap2/adldap2/docs/setup.md
  6. 15 5
      api/vendor/adldap2/adldap2/readme.md
  7. 2 2
      api/vendor/adldap2/adldap2/src/Adldap.php
  8. 31 0
      api/vendor/adldap2/adldap2/src/Connections/Ldap.php
  9. 4 9
      api/vendor/adldap2/adldap2/src/Connections/Provider.php
  10. 4 2
      api/vendor/adldap2/adldap2/src/Events/Dispatcher.php
  11. 5 5
      api/vendor/adldap2/adldap2/src/Models/Computer.php
  12. 2 2
      api/vendor/adldap2/adldap2/src/Models/Contact.php
  13. 2 2
      api/vendor/adldap2/adldap2/src/Models/Container.php
  14. 18 0
      api/vendor/adldap2/adldap2/src/Models/Factory.php
  15. 2 2
      api/vendor/adldap2/adldap2/src/Models/Group.php
  16. 2 2
      api/vendor/adldap2/adldap2/src/Models/Model.php
  17. 31 0
      api/vendor/adldap2/adldap2/src/Models/Organization.php
  18. 5 5
      api/vendor/adldap2/adldap2/src/Models/User.php
  19. 72 0
      api/vendor/adldap2/adldap2/src/Query/Builder.php
  20. 12 0
      api/vendor/adldap2/adldap2/src/Query/Factory.php
  21. 1 1
      api/vendor/adldap2/adldap2/src/Schemas/OpenLDAP.php
  22. 27 1
      api/vendor/adldap2/adldap2/src/Schemas/Schema.php
  23. 1 1
      api/vendor/adldap2/adldap2/src/Schemas/SchemaInterface.php
  24. 0 1
      api/vendor/composer/autoload_classmap.php
  25. 0 1
      api/vendor/composer/autoload_static.php
  26. 8 8
      api/vendor/composer/installed.json

+ 7 - 7
api/composer.lock

@@ -8,26 +8,26 @@
     "packages": [
         {
             "name": "adldap2/adldap2",
-            "version": "v10.2.2",
+            "version": "v10.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Adldap2/Adldap2.git",
-                "reference": "f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb"
+                "reference": "1294c92746e3fb3bb59cd7756ca7838a1e705a2a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Adldap2/Adldap2/zipball/f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb",
-                "reference": "f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb",
+                "url": "https://api.github.com/repos/Adldap2/Adldap2/zipball/1294c92746e3fb3bb59cd7756ca7838a1e705a2a",
+                "reference": "1294c92746e3fb3bb59cd7756ca7838a1e705a2a",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "ext-ldap": "*",
-                "illuminate/contracts": "~5.0|~6.0",
+                "illuminate/contracts": "~5.0|~6.0|~7.0",
                 "php": ">=7.0",
                 "psr/log": "~1.0",
                 "psr/simple-cache": "~1.0",
-                "tightenco/collect": "~5.0|~6.0"
+                "tightenco/collect": "~5.0|~6.0|~7.0"
             },
             "require-dev": {
                 "mockery/mockery": "~1.0",
@@ -63,7 +63,7 @@
                 "ldap",
                 "windows"
             ],
-            "time": "2019-12-18T15:07:31+00:00"
+            "time": "2020-05-04T21:10:15+00:00"
         },
         {
             "name": "composer/semver",

+ 2 - 2
api/vendor/adldap2/adldap2/composer.json

@@ -31,8 +31,8 @@
         "ext-json": "*",
         "psr/log": "~1.0",
         "psr/simple-cache": "~1.0",
-        "tightenco/collect": "~5.0|~6.0",
-        "illuminate/contracts": "~5.0|~6.0"
+        "tightenco/collect": "~5.0|~6.0|~7.0",
+        "illuminate/contracts": "~5.0|~6.0|~7.0"
     },
     "require-dev": {
         "phpunit/phpunit": "~6.0",

+ 19 - 0
api/vendor/adldap2/adldap2/docs/models/organization.md

@@ -0,0 +1,19 @@
+# The Organization Model
+
+The Organization model extends from the base `Adldap\Models\Model` class and contains
+no specific methods / attributes that are limited to it.
+
+## Creation
+
+```php
+// Adldap\Models\Organization
+$org = $provider->make()->organization([
+    'o' => 'Some Company',
+]);
+
+// Set the DN manually:
+
+$org->setDn('o=Some Company,dc=test,dc=local,dc=com');
+
+$org->save();
+```

+ 17 - 10
api/vendor/adldap2/adldap2/docs/searching.md

@@ -76,7 +76,7 @@ found, use the `findOrFail()` method:
 try {
 
     $record = $search->findOrFail('John Doe');
-    
+
 } catch (Adldap\Models\ModelNotFoundException $e) {
     // Record wasn't found!
 }
@@ -100,7 +100,7 @@ an exception when it cannot be found, use the `findByOrFail()` method:
 try {
 
     $record = $search->findByOrFail('samaccountname', 'jdoe');
-    
+
 } catch (Adldap\Models\ModelNotFoundException $e) {
     // Record wasn't found!
 }
@@ -123,7 +123,7 @@ an exception when it hasn't been found, use the `findByDnOrFail()` method:
 try {
 
     $record = $search->findByDnOrFail('cn=John Doe,dc=corp,dc=org');
-    
+
 } catch (Adldap\Models\ModelNotFoundException $e) {
     // Record wasn't found!
 }
@@ -163,7 +163,7 @@ To retrieve the first record of a search or throw an exception when one isn't fo
 try {
 
     $record = $search->firstOrFail();
-    
+
 } catch (Adldap\Models\ModelNotFoundException $e) {
     // Record wasn't found!
 }
@@ -228,7 +228,7 @@ $results = $provider->search()->whereStartsWith('cn', 'John')->get();
 ```
 
 #### Where Ends With
-    
+
 We can also search for all objects that end with the common name of `Doe` using the `ends_with` operator:
 
 ```php
@@ -318,7 +318,7 @@ $results = $search
             ->orWhere('cn', '=', 'Suzy Doe')
             ->get();
 ```
-    
+
 This query would return no results. Since we're already defining that the common name (`cn`) must equal `John Doe`, applying
 the `orWhere()` does not amount to 'Look for an object with the common name as "John Doe" OR "Suzy Doe"'. This query would
 actually amount to 'Look for an object with the common name that <b>equals</b> "John Doe" OR "Suzy Doe"
@@ -395,7 +395,7 @@ $results = $query->andFilter(function (Adldap\Query\Builder $q) {
 
     $q->where('givenname', '=', 'John')
       ->where('sn', '=', 'Doe');
-      
+
 })->get();
 ```
 
@@ -414,7 +414,7 @@ $results = $query->orFilter(function (Adldap\Query\Builder $q) {
 
     $q->where('givenname', '=', 'John')
       ->where('sn', '=', 'Doe');
-      
+
 })->get();
 ```
 
@@ -432,7 +432,7 @@ $results = $query->notFilter(function (Adldap\Query\Builder $q) {
 
     $q->where('givenname', '=', 'John')
       ->where('sn', '=', 'Doe');
-      
+
 })->get();
 ```
 
@@ -568,6 +568,9 @@ $results = $search->printers()->get();
 // Retrieve all organizational units (Adldap\Models\OrganizationalUnit).
 $results = $search->ous()->get();
 
+// Retrieve all organizational units (Adldap\Models\OrganizationalUnit).
+$results = $search->organizations()->get();
+
 // Retrieve all groups (Adldap\Models\Group).
 $results = $search->groups()->get();
 
@@ -588,9 +591,13 @@ To set the base DN of your search you can use one of two methods:
 ```php
 // Using the `in()` method:
 $results = $provider->search()->in('ou=Accounting,dc=acme,dc=org')->get();
-    
+
 // Using the `setDn()` method:
 $results = $provider->search()->setDn('ou=Accounting,dc=acme,dc=org')->get();
+
+// You can also include `in()` with the scope
+$results = $provider->search()->organizations()->in('ou=Accounting,dc=acme,dc=org')->get()
+
 ```
 
 Either option will return the same results. Use which ever method you prefer to be more readable.

+ 61 - 1
api/vendor/adldap2/adldap2/docs/setup.md

@@ -24,7 +24,7 @@ $config = [
 
 ```php
 // Setting options via first argument:
-$config = new Aldldap\Configuration\DomainConfiguration([
+$config = new Adldap\Configuration\DomainConfiguration([
     'hosts' => [
         'DC-01.corp.acme.org',
     ],
@@ -441,6 +441,66 @@ Once you've set the schema of your connection provider, you can use the same API
 
 Continue onto the [searching](searching.md) documentation to learn how to begin querying your LDAP server(s).
 
+## Using G-Suite Secure LDAP Service
+
+G-Suite LDAP service only uses client certificates and no username + password, make sure yo match base_dn with your domian.
+
+```php
+$ad = new \Adldap\Adldap();
+
+// Create a configuration array.
+$config = [  
+    'hosts'    => ['ldap.google.com'],
+    'base_dn'  => 'dc=your-domain,dc=com',
+    'use_tls' => true,
+    'version' => 3,
+    'schema' => Adldap\Schemas\GSuite::class,
+    'custom_options' => [
+        LDAP_OPT_X_TLS_CERTFILE => 'Google_2023_02_05_35779.crt',
+        LDAP_OPT_X_TLS_KEYFILE => 'Google_2023_02_05_35779.key', 
+    ]
+];
+
+$ad->addProvider($config);
+
+try {
+    $provider = $ad->connect();
+    
+    $results = $provider->search()->ous()->get();
+    
+    echo 'OUs:'."\r\n";
+    echo '==============='."\r\n";
+    foreach($results as $ou) {
+        echo $ou->getDn()."\r\n";
+    }
+    
+    echo "\r\n";
+    
+    $results = $provider->search()->users()->get();
+    
+    echo 'Users:'."\r\n";
+    echo '==============='."\r\n";
+    foreach($results as $user) {
+        
+        echo $user->getAccountName()."\r\n";
+    }
+    
+    echo "\r\n";
+    
+    $results = $provider->search()->groups()->get();
+    
+    echo 'Groups:'."\r\n";
+    echo '==============='."\r\n";
+    foreach($results as $group) {
+        echo $group->getCommonName().' | '.$group->getDisplayName()."\r\n";
+    }
+
+} catch (\Adldap\Auth\BindException $e) {
+
+    echo 'Error: '.$e->getMessage()."\r\n";
+}
+```
+
 ## Raw Operations
 
 ### Introduction

+ 15 - 5
api/vendor/adldap2/adldap2/readme.md

@@ -1,4 +1,18 @@
-<!-- readme.md -->
+<p align="center">
+<strong>:wave: Hey there! Looking for something even easier to use for LDAP integration in your PHP applications?</strong>
+</br>
+<h3 align="center">
+ 🎉 Introducing <a href="https://github.com/DirectoryTree/LdapRecord" target="_blank" title="LdapRecord GitHub Repository">LdapRecord</a> 🎉
+</h3>
+</p>
+
+<p align="center">
+    <strong>
+        <a href="https://ldaprecord.com">LdapRecord</a> is the successor to Adldap2 - and comes with a ton of new features.
+    </strong> </br> Adldap2 will continue to be supported with bug fixes, but will not receive new features.
+</p>
+
+<hr/>
 
 <h1 align="center">Adldap2</h1>
 
@@ -10,10 +24,6 @@
     <a href="https://packagist.org/packages/adldap2/adldap2"><img src="https://img.shields.io/packagist/l/adldap2/adldap2.svg?style=flat-square"/></a>
 </p>
 
-<p align="center">
-    Working with LDAP doesn't need to be hard.
-</p>
-
 <p align="center">
     Adldap2 is a PHP package that provides LDAP authentication and directory management tools using the <a href="https://en.wikipedia.org/wiki/Active_record_pattern">Active Record pattern</a>.
 </p>

+ 2 - 2
api/vendor/adldap2/adldap2/src/Adldap.php

@@ -14,8 +14,8 @@ use Adldap\Configuration\DomainConfiguration;
 
 class Adldap implements AdldapInterface
 {
-    use DispatchesEvents, LogsInformation;
-
+    use DispatchesEvents;
+    use LogsInformation;
     /**
      * The default provider name.
      *

+ 31 - 0
api/vendor/adldap2/adldap2/src/Connections/Ldap.php

@@ -302,6 +302,27 @@ class Ldap implements ConnectionInterface
         return ldap_read($this->connection, $dn, $filter, $fields, $onlyAttributes, $size, $time);
     }
 
+    /**
+     * Extract information from an LDAP result.
+     *
+     * @link https://www.php.net/manual/en/function.ldap-parse-result.php
+     *
+     * @param resource $result
+     * @param int      $errorCode
+     * @param string   $dn
+     * @param string   $errorMessage
+     * @param array    $referrals
+     * @param array    $serverControls
+     *
+     * @return bool
+     */
+    public function parseResult($result, &$errorCode, &$dn, &$errorMessage, &$referrals, &$serverControls = [])
+    {
+        return $this->supportsServerControlsInMethods() && !empty($serverControls) ?
+            ldap_parse_result($this->connection, $result, $errorCode, $dn, $errorMessage, $referrals, $serverControls) :
+            ldap_parse_result($this->connection, $result, $errorCode, $dn, $errorMessage, $referrals);
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -485,6 +506,16 @@ class Ldap implements ConnectionInterface
         return $this->isUsingSSL() ? $this::PROTOCOL_SSL : $this::PROTOCOL;
     }
 
+    /**
+     * Determine if the current PHP version supports server controls.
+     *
+     * @return bool
+     */
+    public function supportsServerControlsInMethods()
+    {
+        return version_compare(PHP_VERSION, '7.3.0') >= 0;
+    }
+
     /**
      * Generates an LDAP connection string for each host given.
      *

+ 4 - 9
api/vendor/adldap2/adldap2/src/Connections/Provider.php

@@ -17,7 +17,7 @@ use Adldap\Configuration\DomainConfiguration;
 /**
  * Class Provider.
  *
- * Contains the LPAP connection and domain configuration to
+ * Contains the LDAP connection and domain configuration to
  * instantiate factories for retrieving and creating
  * LDAP records as well as authentication (binding).
  */
@@ -68,18 +68,13 @@ class Provider implements ProviderInterface
     }
 
     /**
-     * Close the LDAP connection (if bound) upon destruction.
+     * Does nothing. Implemented in order to remain backwards compatible.
      *
-     * @return void
+     * @deprecated since v10.3.0
      */
     public function __destruct()
     {
-        if (
-            $this->connection instanceof ConnectionInterface &&
-            $this->connection->isBound()
-        ) {
-            $this->connection->close();
-        }
+        //
     }
 
     /**

+ 4 - 2
api/vendor/adldap2/adldap2/src/Events/Dispatcher.php

@@ -102,7 +102,8 @@ class Dispatcher implements DispatcherInterface
         // object and use the class as the event name and this event itself as the
         // payload to the handler, which makes object based events quite simple.
         list($event, $payload) = $this->parseEventAndPayload(
-            $event, $payload
+            $event,
+            $payload
         );
 
         $responses = [];
@@ -285,7 +286,8 @@ class Dispatcher implements DispatcherInterface
             }
 
             return call_user_func_array(
-                $this->parseListenerCallback($listener), $payload
+                $this->parseListenerCallback($listener),
+                $payload
             );
         };
     }

+ 5 - 5
api/vendor/adldap2/adldap2/src/Models/Computer.php

@@ -9,11 +9,11 @@ namespace Adldap\Models;
  */
 class Computer extends Entry
 {
-    use Concerns\HasMemberOf,
-        Concerns\HasDescription,
-        Concerns\HasLastLogonAndLogOff,
-        Concerns\HasUserAccountControl,
-        Concerns\HasCriticalSystemObject;
+    use Concerns\HasMemberOf;
+    use Concerns\HasDescription;
+    use Concerns\HasLastLogonAndLogOff;
+    use Concerns\HasUserAccountControl;
+    use Concerns\HasCriticalSystemObject;
 
     /**
      * Returns the computers operating system.

+ 2 - 2
api/vendor/adldap2/adldap2/src/Models/Contact.php

@@ -9,6 +9,6 @@ namespace Adldap\Models;
  */
 class Contact extends Entry
 {
-    use Concerns\HasMemberOf,
-        Concerns\HasUserProperties;
+    use Concerns\HasMemberOf;
+    use Concerns\HasUserProperties;
 }

+ 2 - 2
api/vendor/adldap2/adldap2/src/Models/Container.php

@@ -9,8 +9,8 @@ namespace Adldap\Models;
  */
 class Container extends Entry
 {
-    use Concerns\HasDescription,
-        Concerns\HasCriticalSystemObject;
+    use Concerns\HasDescription;
+    use Concerns\HasCriticalSystemObject;
 
     /**
      * Returns the containers system flags integer.

+ 18 - 0
api/vendor/adldap2/adldap2/src/Models/Factory.php

@@ -115,6 +115,24 @@ class Factory
             ]);
     }
 
+    /**
+     * Creates a new organizational unit instance.
+     *
+     * @param array $attributes
+     *
+     * @return Organization
+     */
+    public function organization(array $attributes = [])
+    {
+        $model = $this->schema->organizationModel();
+
+        return (new $model($attributes, $this->query))
+            ->setAttribute($this->schema->objectClass(), [
+                $this->schema->top(),
+                $this->schema->organization(),
+            ]);
+    }
+
     /**
      * Creates a new group instance.
      *

+ 2 - 2
api/vendor/adldap2/adldap2/src/Models/Group.php

@@ -12,8 +12,8 @@ use InvalidArgumentException;
  */
 class Group extends Entry
 {
-    use Concerns\HasMemberOf,
-        Concerns\HasDescription;
+    use Concerns\HasMemberOf;
+    use Concerns\HasDescription;
 
     /**
      * Returns all users apart of the current group.

+ 2 - 2
api/vendor/adldap2/adldap2/src/Models/Model.php

@@ -26,8 +26,8 @@ use Adldap\Models\Attributes\DistinguishedName;
  */
 abstract class Model implements ArrayAccess, JsonSerializable
 {
-    use Concerns\HasEvents,
-        Concerns\HasAttributes;
+    use Concerns\HasEvents;
+    use Concerns\HasAttributes;
 
     /**
      * Indicates if the model exists.

+ 31 - 0
api/vendor/adldap2/adldap2/src/Models/Organization.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace Adldap\Models;
+
+/**
+ * Class Organization.
+ *
+ * Represents an LDAP organization.
+ */
+class Organization extends Entry
+{
+    use Concerns\HasDescription;
+
+    /**
+     * Retrieves the organization units OU attribute.
+     *
+     * @return string
+     */
+    public function getOrganization()
+    {
+        return $this->getFirstAttribute($this->schema->organizationName());
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getCreatableDn()
+    {
+        return $this->getDnBuilder()->addO($this->getOrganization());
+    }
+}

+ 5 - 5
api/vendor/adldap2/adldap2/src/Models/User.php

@@ -17,11 +17,11 @@ use Illuminate\Contracts\Auth\Authenticatable;
  */
 class User extends Entry implements Authenticatable
 {
-    use Concerns\HasUserProperties,
-        Concerns\HasDescription,
-        Concerns\HasMemberOf,
-        Concerns\HasLastLogonAndLogOff,
-        Concerns\HasUserAccountControl;
+    use Concerns\HasUserProperties;
+    use Concerns\HasDescription;
+    use Concerns\HasMemberOf;
+    use Concerns\HasLastLogonAndLogOff;
+    use Concerns\HasUserAccountControl;
 
     /** @var callable|null */
     private static $passwordStrategy;

+ 72 - 0
api/vendor/adldap2/adldap2/src/Query/Builder.php

@@ -485,6 +485,22 @@ class Builder
      * @return array
      */
     protected function runPaginate($filter, $perPage, $isCritical)
+    {
+        return $this->connection->supportsServerControlsInMethods() ?
+            $this->compatiblePaginationCallback($filter, $perPage, $isCritical) :
+            $this->deprecatedPaginationCallback($filter, $perPage, $isCritical);
+    }
+
+    /**
+     * Create a deprecated pagination callback compatible with PHP 7.2.
+     *
+     * @param string $filter
+     * @param int    $perPage
+     * @param bool   $isCritical
+     *
+     * @return array
+     */
+    protected function deprecatedPaginationCallback($filter, $perPage, $isCritical)
     {
         $pages = [];
 
@@ -514,6 +530,62 @@ class Builder
         return $pages;
     }
 
+    /**
+     * Create a compatible pagination callback compatible with PHP 7.3 and greater.
+     *
+     * @param string $filter
+     * @param int    $perPage
+     * @param bool   $isCritical
+     *
+     * @return array
+     */
+    protected function compatiblePaginationCallback($filter, $perPage, $isCritical)
+    {
+        $pages = [];
+
+        // Setup our paged results control.
+        $controls = [
+            LDAP_CONTROL_PAGEDRESULTS => [
+                'oid'        => LDAP_CONTROL_PAGEDRESULTS,
+                'isCritical' => $isCritical,
+                'value'      => [
+                    'size'   => $perPage,
+                    'cookie' => '',
+                ],
+            ],
+        ];
+
+        do {
+            // Update the server controls.
+            $this->connection->setOption(LDAP_OPT_SERVER_CONTROLS, $controls);
+
+            // Run the search.
+            $resource = $this->run($filter);
+
+            if ($resource) {
+                $errorCode = $dn = $errorMessage = $refs = null;
+
+                // Update the server controls with the servers response.
+                $this->connection->parseResult($resource, $errorCode, $dn, $errorMessage, $refs, $controls);
+
+                $pages[] = $this->parse($resource);
+
+                // Reset paged result on the current connection. We won't pass in the current $perPage
+                // parameter since we want to reset the page size to the default '1000'. Sending '0'
+                // eliminates any further opportunity for running queries in the same request,
+                // even though that is supposed to be the correct usage.
+                $controls[LDAP_CONTROL_PAGEDRESULTS]['value']['size'] = $perPage;
+            }
+        } while (!empty($controls[LDAP_CONTROL_PAGEDRESULTS]['value']['cookie']));
+
+        // After running the query, we will clear the LDAP server controls. This
+        // allows the controls to be automatically reset before each new query
+        // that is conducted on the same connection during each request.
+        $this->connection->setOption(LDAP_OPT_SERVER_CONTROLS, []);
+
+        return $pages;
+    }
+
     /**
      * Parses the given LDAP resource by retrieving its entries.
      *

+ 12 - 0
api/vendor/adldap2/adldap2/src/Query/Factory.php

@@ -181,6 +181,18 @@ class Factory
         ]);
     }
 
+    /**
+     * Returns a query builder scoped to organizations.
+     *
+     * @return Builder
+     */
+    public function organizations()
+    {
+        return $this->where([
+            $this->schema->objectClass() => $this->schema->objectClassOrganization(),
+        ]);
+    }
+
     /**
      * Returns a query builder scoped to groups.
      *

+ 1 - 1
api/vendor/adldap2/adldap2/src/Schemas/OpenLDAP.php

@@ -73,7 +73,7 @@ class OpenLDAP extends Schema
      */
     public function objectClassOu()
     {
-        return 'groupofuniquenames';
+        return 'organizationalUnit';
     }
 
     /**

+ 27 - 1
api/vendor/adldap2/adldap2/src/Schemas/Schema.php

@@ -9,6 +9,7 @@ use Adldap\Models\Contact;
 use Adldap\Models\Printer;
 use Adldap\Models\Computer;
 use Adldap\Models\Container;
+use Adldap\Models\Organization;
 use Adldap\Models\OrganizationalUnit;
 use Adldap\Models\ForeignSecurityPrincipal;
 
@@ -654,6 +655,14 @@ abstract class Schema implements SchemaInterface
         return 'container';
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function objectClassOrganization()
+    {
+        return 'organization';
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -690,6 +699,7 @@ abstract class Schema implements SchemaInterface
             $this->objectClassGroup()                       => $this->groupModel(),
             $this->objectClassContainer()                   => $this->containerModel(),
             $this->objectClassPrinter()                     => $this->printerModel(),
+            $this->objectClassOrganization()                => $this->organizationModel(),
             $this->objectClassOu()                          => $this->organizationalUnitModel(),
             $this->objectClassForeignSecurityPrincipal()    => $this->foreignSecurityPrincipalModel(),
         ];
@@ -735,6 +745,14 @@ abstract class Schema implements SchemaInterface
         return 'operatingsystemversion';
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function organization()
+    {
+        return 'organization';
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -767,6 +785,14 @@ abstract class Schema implements SchemaInterface
         return OrganizationalUnit::class;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function organizationModel()
+    {
+        return Organization::class;
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -1194,7 +1220,7 @@ abstract class Schema implements SchemaInterface
     /**
      * {@inheritdoc}
      */
-    public function userObjectClasses() : array
+    public function userObjectClasses(): array
     {
         return [
             $this->top(),

+ 1 - 1
api/vendor/adldap2/adldap2/src/Schemas/SchemaInterface.php

@@ -1384,7 +1384,7 @@ interface SchemaInterface
      *
      * @return array
      */
-    public function userObjectClasses() : array;
+    public function userObjectClasses(): array;
 
     /**
      * This attribute contains the UPN that is an Internet-style login name for

+ 0 - 1
api/vendor/composer/autoload_classmap.php

@@ -7,7 +7,6 @@ $baseDir = dirname($vendorDir);
 
 return array(
     'Dibi\\Bridges\\Nette\\DibiExtension22' => $vendorDir . '/dibi/dibi/src/Dibi/Bridges/Nette/DibiExtension22.php',
-    'Dibi\\Bridges\\Tracy\\Panel' => $vendorDir . '/dibi/dibi/src/Dibi/Bridges/Tracy/Panel.php',
     'Dibi\\Connection' => $vendorDir . '/dibi/dibi/src/Dibi/Connection.php',
     'Dibi\\ConstraintViolationException' => $vendorDir . '/dibi/dibi/src/Dibi/exceptions.php',
     'Dibi\\DataSource' => $vendorDir . '/dibi/dibi/src/Dibi/DataSource.php',

+ 0 - 1
api/vendor/composer/autoload_static.php

@@ -191,7 +191,6 @@ class ComposerStaticInitcbdc783d76f8e7563dcce7d8af053ecb
 
     public static $classMap = array (
         'Dibi\\Bridges\\Nette\\DibiExtension22' => __DIR__ . '/..' . '/dibi/dibi/src/Dibi/Bridges/Nette/DibiExtension22.php',
-        'Dibi\\Bridges\\Tracy\\Panel' => __DIR__ . '/..' . '/dibi/dibi/src/Dibi/Bridges/Tracy/Panel.php',
         'Dibi\\Connection' => __DIR__ . '/..' . '/dibi/dibi/src/Dibi/Connection.php',
         'Dibi\\ConstraintViolationException' => __DIR__ . '/..' . '/dibi/dibi/src/Dibi/exceptions.php',
         'Dibi\\DataSource' => __DIR__ . '/..' . '/dibi/dibi/src/Dibi/DataSource.php',

+ 8 - 8
api/vendor/composer/installed.json

@@ -1,27 +1,27 @@
 [
     {
         "name": "adldap2/adldap2",
-        "version": "v10.2.2",
-        "version_normalized": "10.2.2.0",
+        "version": "v10.3.0",
+        "version_normalized": "10.3.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/Adldap2/Adldap2.git",
-            "reference": "f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb"
+            "reference": "1294c92746e3fb3bb59cd7756ca7838a1e705a2a"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/Adldap2/Adldap2/zipball/f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb",
-            "reference": "f09ca4ae3a65dbf123b56dc7e4ace8682ea16cdb",
+            "url": "https://api.github.com/repos/Adldap2/Adldap2/zipball/1294c92746e3fb3bb59cd7756ca7838a1e705a2a",
+            "reference": "1294c92746e3fb3bb59cd7756ca7838a1e705a2a",
             "shasum": ""
         },
         "require": {
             "ext-json": "*",
             "ext-ldap": "*",
-            "illuminate/contracts": "~5.0|~6.0",
+            "illuminate/contracts": "~5.0|~6.0|~7.0",
             "php": ">=7.0",
             "psr/log": "~1.0",
             "psr/simple-cache": "~1.0",
-            "tightenco/collect": "~5.0|~6.0"
+            "tightenco/collect": "~5.0|~6.0|~7.0"
         },
         "require-dev": {
             "mockery/mockery": "~1.0",
@@ -30,7 +30,7 @@
         "suggest": {
             "ext-fileinfo": "fileinfo is required when retrieving user encoded thumbnails"
         },
-        "time": "2019-12-18T15:07:31+00:00",
+        "time": "2020-05-04T21:10:15+00:00",
         "type": "library",
         "installation-source": "dist",
         "autoload": {