diff --git a/app/Classes/LDAP/Attribute.php b/app/Classes/LDAP/Attribute.php index 08fcb513..74997911 100644 --- a/app/Classes/LDAP/Attribute.php +++ b/app/Classes/LDAP/Attribute.php @@ -18,7 +18,7 @@ class Attribute implements \Countable, \ArrayAccess protected string $name; // Is this attribute an internal attribute - protected(set) bool $is_internal = FALSE; + protected ?bool $_is_internal = NULL; protected(set) bool $no_attr_tags = FALSE; // MIN/MAX number of values @@ -144,6 +144,8 @@ class Attribute implements \Countable, \ArrayAccess 'hints' => $this->hints(), // Can this attribute be edited 'is_editable' => $this->schema ? $this->schema->{$key} : NULL, + // Is this an internal attribute + 'is_internal' => is_null($this->_is_internal) ? ($this->used_in->count() === 0) : $this->_is_internal, // Objectclasses that required this attribute for an LDAP entry 'required' => $this->required(), // Is this attribute an RDN attribute @@ -157,7 +159,7 @@ class Attribute implements \Countable, \ArrayAccess // Used in Object Classes 'used_in' => $this->schema?->used_in_object_classes ?: collect(), // The current attribute values - 'values' => $this->no_attr_tags ? $this->tagValues() : $this->_values, + 'values' => ($this->no_attr_tags || $this->is_internal) ? $this->tagValues() : $this->_values, // The original attribute values 'values_old' => $this->no_attr_tags ? $this->tagValuesOld() : $this->_values_old, @@ -313,6 +315,11 @@ class Attribute implements \Countable, \ArrayAccess */ public function render(bool $edit=FALSE,bool $old=FALSE,bool $new=FALSE,string $langtag=Entry::TAG_NOTAG,bool $updated=FALSE): View { + if ($this->is_internal) + // @note Internal attributes cannot be edited + return view('components.attribute.internal') + ->with('o',$this); + $view = match ($this->schema?->syntax_oid) { self::SYNTAX_CERTIFICATE => view('components.syntax.certificate'), self::SYNTAX_CERTIFICATE_LIST => view('components.syntax.certificatelist'), diff --git a/app/Classes/LDAP/Attribute/Factory.php b/app/Classes/LDAP/Attribute/Factory.php index aac37955..615fdf95 100644 --- a/app/Classes/LDAP/Attribute/Factory.php +++ b/app/Classes/LDAP/Attribute/Factory.php @@ -24,13 +24,7 @@ class Factory 'cacertificate' => Certificate::class, 'certificaterevocationlist' => CertificateList::class, 'createtimestamp' => Internal\Timestamp::class, - 'creatorsname' => Internal\DN::class, 'configcontext' => Schema\Generic::class, - 'contextcsn' => Internal\CSN::class, - 'entrycsn' => Internal\CSN::class, - 'entrydn' => Internal\DN::class, - 'entryuuid' => Internal\UUID::class, - 'etag' => Internal\Etag::class, 'krblastfailedauth' => Attribute\NoAttrTags\Generic::class, 'krblastpwdchange' => Attribute\NoAttrTags\Generic::class, 'krblastsuccessfulauth' => Attribute\NoAttrTags\Generic::class, @@ -39,17 +33,11 @@ class Factory 'krbprincipalkey' => KrbPrincipalKey::class, 'krbticketflags' => KrbTicketFlags::class, 'gidnumber' => GidNumber::class, - 'hassubordinates' => Internal\HasSubordinates::class, 'jpegphoto' => Binary\JpegPhoto::class, 'modifytimestamp' => Internal\Timestamp::class, - 'modifiersname' => Internal\DN::class, 'monitorcontext' => Schema\Generic::class, 'namingcontexts' => Schema\Generic::class, - 'numsubordinates' => Internal\NumSubordinates::class, 'objectclass' => ObjectClass::class, - 'pwdpolicysubentry' => Internal\PwdPolicySubentry::class, - 'structuralobjectclass' => Internal\StructuralObjectClass::class, - 'subschemasubentry' => Internal\SubschemaSubentry::class, 'supportedcontrol' => Schema\OID::class, 'supportedextension' => Schema\OID::class, 'supportedfeatures' => Schema\OID::class, diff --git a/app/Classes/LDAP/Attribute/Internal.php b/app/Classes/LDAP/Attribute/Internal.php index 4f5701e2..e8187b1f 100644 --- a/app/Classes/LDAP/Attribute/Internal.php +++ b/app/Classes/LDAP/Attribute/Internal.php @@ -2,23 +2,13 @@ namespace App\Classes\LDAP\Attribute; -use Illuminate\Contracts\View\View; - use App\Classes\LDAP\Attribute; -use App\Ldap\Entry; /** * Represents an attribute whose values are internal */ abstract class Internal extends Attribute { - protected(set) bool $is_internal = TRUE; + protected ?bool $_is_internal = TRUE; protected(set) bool $no_attr_tags = TRUE; - - public function render(bool $edit=FALSE,bool $old=FALSE,bool $new=FALSE,string $langtag=Entry::TAG_NOTAG,bool $updated=FALSE): View - { - // @note Internal attributes cannot be edited - return view('components.attribute.internal') - ->with('o',$this); - } } \ No newline at end of file diff --git a/app/Classes/LDAP/Attribute/Internal/CSN.php b/app/Classes/LDAP/Attribute/Internal/CSN.php deleted file mode 100644 index eb08eb5c..00000000 --- a/app/Classes/LDAP/Attribute/Internal/CSN.php +++ /dev/null @@ -1,12 +0,0 @@ - + @foreach(old($o->name_lc,$o->values) as $value) @if($loop->index)
@endif {{ $value }}