git subrepo commit (merge) mailcow/src/mailcow-dockerized
subrepo: subdir: "mailcow/src/mailcow-dockerized"
merged: "02ae5285"
upstream: origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "649a5c01"
git-subrepo: version: "0.4.3"
origin: "???"
commit: "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Entry.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Entry.php
new file mode 100644
index 0000000..b7ad37a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Entry.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace LdapRecord\Models\OpenLDAP;
+
+use LdapRecord\Connection;
+use LdapRecord\Models\Entry as BaseEntry;
+use LdapRecord\Models\OpenLDAP\Scopes\AddEntryUuidToSelects;
+use LdapRecord\Models\Types\OpenLDAP;
+use LdapRecord\Query\Model\OpenLdapBuilder;
+
+/** @mixin OpenLdapBuilder */
+class Entry extends BaseEntry implements OpenLDAP
+{
+ /**
+ * The attribute key that contains the models object GUID.
+ *
+ * @var string
+ */
+ protected $guidKey = 'entryuuid';
+
+ /**
+ * @inheritdoc
+ */
+ protected static function boot()
+ {
+ parent::boot();
+
+ // Here we'll add a global scope to all OpenLDAP models to ensure the
+ // Entry UUID is always selected on each query. This attribute is
+ // virtual, so it must be manually selected to be included.
+ static::addGlobalScope(new AddEntryUuidToSelects());
+ }
+
+ /**
+ * Create a new query builder.
+ *
+ * @param Connection $connection
+ *
+ * @return OpenLdapBuilder
+ */
+ public function newQueryBuilder(Connection $connection)
+ {
+ return new OpenLdapBuilder($connection);
+ }
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Group.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Group.php
new file mode 100644
index 0000000..2d8d94e
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Group.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace LdapRecord\Models\OpenLDAP;
+
+class Group extends Entry
+{
+ /**
+ * The object classes of the LDAP model.
+ *
+ * @var array
+ */
+ public static $objectClasses = [
+ 'top',
+ 'groupofuniquenames',
+ ];
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/OrganizationalUnit.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/OrganizationalUnit.php
new file mode 100644
index 0000000..7ae0a37
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/OrganizationalUnit.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace LdapRecord\Models\OpenLDAP;
+
+class OrganizationalUnit extends Entry
+{
+ /**
+ * The object classes of the LDAP model.
+ *
+ * @var array
+ */
+ public static $objectClasses = [
+ 'top',
+ 'organizationalunit',
+ ];
+
+ /**
+ * Get the creatable RDN attribute name.
+ *
+ * @return string
+ */
+ public function getCreatableRdnAttribute()
+ {
+ return 'ou';
+ }
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Scopes/AddEntryUuidToSelects.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Scopes/AddEntryUuidToSelects.php
new file mode 100644
index 0000000..54376c2
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/Scopes/AddEntryUuidToSelects.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace LdapRecord\Models\OpenLDAP\Scopes;
+
+use LdapRecord\Models\Model;
+use LdapRecord\Models\Scope;
+use LdapRecord\Query\Model\Builder;
+
+class AddEntryUuidToSelects implements Scope
+{
+ /**
+ * Add the entry UUID to the selected attributes.
+ *
+ * @param Builder $query
+ * @param Model $model
+ *
+ * @return void
+ */
+ public function apply(Builder $query, Model $model)
+ {
+ empty($query->columns)
+ ? $query->addSelect(['*', $model->getGuidKey()])
+ : $query->addSelect($model->getGuidKey());
+ }
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/User.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/User.php
new file mode 100644
index 0000000..b37f390
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Models/OpenLDAP/User.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace LdapRecord\Models\OpenLDAP;
+
+use Illuminate\Contracts\Auth\Authenticatable;
+use LdapRecord\Models\Concerns\CanAuthenticate;
+use LdapRecord\Models\Concerns\HasPassword;
+
+class User extends Entry implements Authenticatable
+{
+ use HasPassword;
+ use CanAuthenticate;
+
+ /**
+ * The password's attribute name.
+ *
+ * @var string
+ */
+ protected $passwordAttribute = 'userpassword';
+
+ /**
+ * The password's hash method.
+ *
+ * @var string
+ */
+ protected $passwordHashMethod = 'ssha';
+
+ /**
+ * The object classes of the LDAP model.
+ *
+ * @var array
+ */
+ public static $objectClasses = [
+ 'top',
+ 'person',
+ 'organizationalperson',
+ 'inetorgperson',
+ ];
+
+ /**
+ * The groups relationship.
+ *
+ * Retrieves groups that the user is apart of.
+ *
+ * @return \LdapRecord\Models\Relations\HasMany
+ */
+ public function groups()
+ {
+ return $this->hasMany(Group::class, 'memberuid', 'uid');
+ }
+}