- Work done on UserAccountControl
This commit is contained in:
parent
ed1265232b
commit
131853104d
@ -12,7 +12,7 @@ use Ulmus\Ldap\Attribute\Obj\ObjectClass;
|
||||
#[ObjectClass("user")]
|
||||
class User implements EntityInterface
|
||||
{
|
||||
use \Ulmus\Ldap\EntityTrait;
|
||||
use \Ulmus\Ldap\EntityTrait, UserAccountControlTrait;
|
||||
|
||||
#[Field]
|
||||
public string $samaccountname;
|
||||
|
||||
28
src/Entity/UserAccountControlEnum.php
Normal file
28
src/Entity/UserAccountControlEnum.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\Ldap\Entity;
|
||||
|
||||
enum UserAccountControlEnum : int
|
||||
{
|
||||
case SCRIPT = 1;
|
||||
case ACCOUNTDISABLE = 2;
|
||||
case HOMEDIR_REQUIRED = 8;
|
||||
case LOCKOUT = 16;
|
||||
case PASSWD_NOTREQD = 32;
|
||||
case ENCRYPTED_TEXT_PWD_ALLOWED = 128;
|
||||
case TEMP_DUPLICATE_ACCOUNT = 256;
|
||||
case NORMAL_ACCOUNT = 512;
|
||||
case INTERDOMAIN_TRUST_ACCOUNT = 2048;
|
||||
case WORKSTATION_TRUST_ACCOUNT = 4096;
|
||||
case SERVER_TRUST_ACCOUNT = 8192;
|
||||
case DONT_EXPIRE_PASSWORD = 65536;
|
||||
case MNS_LOGON_ACCOUNT = 131072;
|
||||
case SMARTCARD_REQUIRED = 262144;
|
||||
case TRUSTED_FOR_DELEGATION = 524288;
|
||||
case NOT_DELEGATED = 1048576;
|
||||
case USE_DES_KEY_ONLY = 2097152;
|
||||
case DONT_REQ_PREAUTH = 4194304;
|
||||
case PASSWORD_EXPIRED = 8388608;
|
||||
case TRUSTED_TO_AUTH_FOR_DELEGATION = 16777216;
|
||||
case PARTIAL_SECRETS_ACCOUNT = 67108864;
|
||||
}
|
||||
16
src/Entity/UserAccountControlTrait.php
Normal file
16
src/Entity/UserAccountControlTrait.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\Ldap\Entity;
|
||||
|
||||
trait UserAccountControlTrait
|
||||
{
|
||||
public function matchAccountControl(UserAccountControlEnum $userAccountControl) : bool
|
||||
{
|
||||
return ($this->userAccountControl & $userAccountControl->value) === $userAccountControl->value;
|
||||
}
|
||||
|
||||
public function isDisabled() : bool
|
||||
{
|
||||
return $this->matchAccountControl(UserAccountControlEnum::ACCOUNTDISABLE);
|
||||
}
|
||||
}
|
||||
@ -105,6 +105,10 @@ class Filter extends Fragment {
|
||||
$this->operator === Filter::OPERATOR_LIKE ? str_replace('%', '*', $this->value) : $value,
|
||||
]));
|
||||
|
||||
if ($this->not) {
|
||||
$return = "!($return)";
|
||||
}
|
||||
|
||||
return $this->applyOperator($return, "");
|
||||
}
|
||||
|
||||
@ -129,6 +133,11 @@ class Filter extends Fragment {
|
||||
return "(" . implode(", ", $stack) . ")";
|
||||
}
|
||||
|
||||
if ($this->operator === '=' && $this->value === "") {
|
||||
$this->value = "*";
|
||||
$this->not = true;
|
||||
}
|
||||
|
||||
return $this->filterValue($this->value);
|
||||
}
|
||||
|
||||
|
||||
@ -180,9 +180,9 @@ class QueryBuilder implements Ulmus\QueryBuilder\QueryBuilderInterface
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function notWhere($field, $value, string $operator = Ulmus\Query\Where::CONDITION_AND) : self
|
||||
public function notWhere($field, $value, string $operator = Ulmus\Query\Where::OPERATOR_EQUAL, string $condition = Ulmus\Query\Where::CONDITION_AND) : self
|
||||
{
|
||||
return $this->where($field, $value, $operator, true);
|
||||
return $this->where($field, $value, $operator, $condition, true);
|
||||
}
|
||||
|
||||
public function limit(int $value) : self
|
||||
|
||||
@ -15,7 +15,7 @@ class Repository extends \Ulmus\Repository
|
||||
|
||||
public array $events = [];
|
||||
|
||||
public readonly \Ulmus\QueryBuilder\QueryBuilderInterface $queryBuilder;
|
||||
# public readonly \Ulmus\QueryBuilder\QueryBuilderInterface $queryBuilder;
|
||||
|
||||
public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null) {
|
||||
# $this->queryBuilder = new QueryBuilder();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user