- Added attributes and also Group[C

This commit is contained in:
Dave Mc Nicoll 2023-09-26 11:25:19 -04:00
parent bced56ba77
commit 7a06f5fd64
7 changed files with 141 additions and 190 deletions

View File

@ -0,0 +1,16 @@
<?php
namespace Ulmus\Ldap\Attribute\Obj;
#[\Attribute]
class ObjectClass {
public string $type;
public function __construct($type = null)
{
if ( $type !== null ) {
$this->type = $type;
}
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace Ulmus\Ldap\Attribute\Obj;
#[\Attribute]
class ObjectType {
public string $type;
public function __construct($type = null)
{
if ( $type !== null ) {
$this->type = $type;
}
}
}

View File

@ -82,7 +82,7 @@ class LdapObject {
{ {
static::$dump && call_user_func_array(static::$dump, [ $filter, $fields ]); static::$dump && call_user_func_array(static::$dump, [ $filter, $fields ]);
$this->search = ldap_search($this->connection, $this->dn, $filter['filters'], $filter['fields'], 0, 0); $this->search = ldap_search($this->connection, $this->dn, $filter['filters'], $filter['fields'] ?? [], 0, 0);
$this->rowCount = $this->bufferedRows = ldap_count_entries($this->connection, $this->search); $this->rowCount = $this->bufferedRows = ldap_count_entries($this->connection, $this->search);
@ -177,7 +177,7 @@ class LdapObject {
public function runUpdateQuery(array $filter, array $dataset) public function runUpdateQuery(array $filter, array $dataset)
{ {
static::$dump && call_user_func_array(static::$dump, [ $filter, $dataset ]); static::$dump && call_user_func_array(static::$dump, [ $filter, $dataset ]);
dump($filter, $dataset);
if ( false === ( $queryResult = ldap_mod_replace($this->connection, $filter['dn'], $dataset) ) ) { if ( false === ( $queryResult = ldap_mod_replace($this->connection, $filter['dn'], $dataset) ) ) {
$this->throwLdapException(); $this->throwLdapException();
} }

View File

@ -4,50 +4,36 @@ namespace Ulmus\Ldap\Entity;
use Ulmus\Ldap\Entity\Field\{ Datetime }; use Ulmus\Ldap\Entity\Field\{ Datetime };
/** use Ulmus\Attribute\Property\Field;
* @ObjectClass('computer')
*/ use Ulmus\Ldap\Attribute\Obj\ObjectClass;
#[ObjectClass("computer")]
class Computer class Computer
{ {
use \Ulmus\Ldap\EntityTrait; use \Ulmus\Ldap\EntityTrait;
/** #[Field]
* @Field
*/
public string $samaccountname; public string $samaccountname;
/** #[Field]
* @Field
*/
public string $name; public string $name;
/** #[Field]
* @Field
*/
public string $description; public string $description;
/** #[Field("DNSHostName")]
* @Field('DNSHostName')
*/
public string $hostname; public string $hostname;
/** #[Field]
* @Field
*/
public string $location; public string $location;
/** #[Field]
* @Field
*/
public string $operatingSystem; public string $operatingSystem;
/** #[Field]
* @Field
*/
public string $operatingSystemServicePack; public string $operatingSystemServicePack;
/** #[Field]
* @Field
*/
public string $operatingSystemVersion; public string $operatingSystemVersion;
} }

35
src/Entity/Group.php Normal file
View File

@ -0,0 +1,35 @@
<?php
namespace Ulmus\Ldap\Entity;
use Ulmus\Ldap\Entity\Field\{ Datetime };
use Ulmus\Attribute\Property\Field;
use Ulmus\Ldap\Attribute\Obj\ObjectClass;
#[ObjectClass("group")]
class Group
{
use \Ulmus\Ldap\EntityTrait;
#[Field]
public string $samaccountname;
#[Field]
public array $members;
#[Field]
public string $name;
#[Field]
public string $canonicalName;
#[Field(name: "objectGUID")]
public string $guid;
public function __toString() : string
{
return $this->name;
}
}

View File

@ -4,51 +4,37 @@ namespace Ulmus\Ldap\Entity;
use Ulmus\Ldap\Entity\Field\{ Datetime }; use Ulmus\Ldap\Entity\Field\{ Datetime };
/** use Ulmus\Attribute\Property\Field;
* @ObjectClass('organizationalUnit')
*/ use Ulmus\Ldap\Attribute\Obj\ObjectClass;
#[ObjectClass("organizationalUnit")]
class OrganizationalUnit class OrganizationalUnit
{ {
use \Ulmus\Ldap\EntityTrait; use \Ulmus\Ldap\EntityTrait;
/** #[Field\Id]
* @Id
*/
public string $ou; public string $ou;
/** #[Field]
* @Field
*/
public string $description; public string $description;
/** #[Field(name: "st")]
* @Field('name' => "st")
*/
public string $state; public string $state;
/** #[Field(name: "physicalDeliveryOfficeName")]
* @Field('name' => 'physicalDeliveryOfficeName')
*/
public string $officeName; public string $officeName;
/** #[Field(name: "postalAddress")]
* @Field('name' => 'postalAddress')
*/
public string $address; public string $address;
/** #[Field]
* @Field
*/
public string $postalCode; public string $postalCode;
/** #[Field]
* @Field
*/
public string $telephoneNumber; public string $telephoneNumber;
/** #[Field(name: "objectGUID")]
* @Field('name' => 'objectGUID')
*/
public string $guid; public string $guid;
public function __toString() : string public function __toString() : string

View File

@ -4,223 +4,135 @@ namespace Ulmus\Ldap\Entity;
use Ulmus\Ldap\Entity\Field\{ Datetime, LdapDatetime }; use Ulmus\Ldap\Entity\Field\{ Datetime, LdapDatetime };
/** use Ulmus\Attribute\Property\{Field, Relation\Ignore, Virtual};
* @ObjectClass('user')
*/ use Ulmus\Ldap\Attribute\Obj\ObjectClass;
#[ObjectClass("user")]
class User class User
{ {
use \Ulmus\Ldap\EntityTrait; use \Ulmus\Ldap\EntityTrait;
/** #[Field]
* @Field
*/
public string $samaccountname; public string $samaccountname;
/** #[Field]
* @Field
*/
public string $mail; public string $mail;
/** #[Field]
* @Field
*/
public string $mailNickname; public string $mailNickname;
/** #[Field(name: "givenname")]
* @Field('name' => 'givenname')
*/
public string $firstname; public string $firstname;
/** #[Field(name: "sn")]
* @Field('name' => 'sn')
*/
public string $lastname; public string $lastname;
/** #[Field]
* @Field
*/
public string $displayName; public string $displayName;
/** #[Field]
* @Field
*/
public string $name; public string $name;
/** #[Field]
* @Field
*/
public string $canonicalName; public string $canonicalName;
/** #[Field]
* @Field
*/
public string $userPrincipalName; public string $userPrincipalName;
/** #[Field]
* @Field
*/
public string $description; public string $description;
/** #[Field(name: "st")]
* @Field('name' => "st")
*/
public string $state; public string $state;
/** #[Field(name: "physicalDeliveryOfficeName")]
* @Field('name' => 'physicalDeliveryOfficeName')
*/
public string $officeName; public string $officeName;
/** #[Field]
* @Field
*/
public string $company; public string $company;
/** #[Field]
* @Field
*/
public string $department; public string $department;
/** #[Field]
* @Field
*/
public string $telephoneNumber; public string $telephoneNumber;
/** #[Field]
* @Field
*/
public string $title; public string $title;
/** ##[Virtual]
* @Virtual
*/
# public ? array $memberOf; # public ? array $memberOf;
/** #[Field]
* @Field
*/
public int $userAccountControl; public int $userAccountControl;
/** #[Field]
* @Field
*/
public string $extensionAttribute1; public string $extensionAttribute1;
/** #[Field]
* @Field
*/
public string $extensionAttribute2; public string $extensionAttribute2;
/** #[Field]
* @Field
*/
public string $extensionAttribute3; public string $extensionAttribute3;
/** #[Field]
* @Field
*/
public string $extensionAttribute4; public string $extensionAttribute4;
/** #[Field]
* @Field
*/
public string $extensionAttribute5; public string $extensionAttribute5;
/** #[Field]
* @Field
*/
public string $extensionAttribute6; public string $extensionAttribute6;
/** #[Field]
* @Field
*/
public string $extensionAttribute7; public string $extensionAttribute7;
/** #[Field]
* @Field
*/
public string $extensionAttribute8; public string $extensionAttribute8;
/** #[Field]
* @Field
*/
public string $extensionAttribute9; public string $extensionAttribute9;
/** #[Field]
* @Field
*/
public string $extensionAttribute10; public string $extensionAttribute10;
/** #[Field]
* @Field
*/
public string $extensionAttribute11; public string $extensionAttribute11;
/** #[Field]
* @Field
*/
public string $extensionAttribute12; public string $extensionAttribute12;
/** #[Field]
* @Field
*/
public string $extensionAttribute13; public string $extensionAttribute13;
/** #[Field]
* @Field
*/
public string $extensionAttribute14; public string $extensionAttribute14;
/** #[Field]
* @Field
*/
public string $extensionAttribute15; public string $extensionAttribute15;
/** #[Field]
* @Field
*/
public int $logonCount; public int $logonCount;
/** #[Field(name: "unicodePwd")]
* @Field('name' => 'unicodePwd')
*/
public string $unicodePassword; public string $unicodePassword;
/** #[Field]
* @Field
*/
public string $userPassword; public string $userPassword;
/** #[Field]
* @Field
*/
public string $scriptPath; public string $scriptPath;
/** #[Field]
* @Field
*/
public string $sid; public string $sid;
/** #[Field]
* @Field
*/
public string $targetAddress; public string $targetAddress;
/** #[Field(name: "lastLogon", readonly: true)]
* @Field('name' => "lastLogon", 'readonly' => true)
*/
public LdapDatetime $lastLogon; public LdapDatetime $lastLogon;
/**
* @Field('name' => "whenChanged", 'readonly' => true)
* /
public LdapDatetime $updatedAt;
/**
* @Field('name' => "whenCreated", 'readonly' => true)
* /
public LdapDatetime $createdAt; */
public function __toString() : string public function __toString() : string
{ {
return implode(' ', array_filter([ $this->firstname ?? "", $this->lastname ?? "" ])) ?: ( $this->displayName ?? "" ); return implode(' ', array_filter([ $this->firstname ?? "", $this->lastname ?? "" ])) ?: ( $this->displayName ?? "" );