Compare commits
11 Commits
7346a3daf5
...
ae0dc2e5d3
Author | SHA1 | Date | |
---|---|---|---|
ae0dc2e5d3 | |||
715fe92da4 | |||
d90bc32887 | |||
2ff0a10901 | |||
eeed0b04f6 | |||
7cf81c14d3 | |||
f5fe35c740 | |||
ff1f33385b | |||
b38edcccf9 | |||
86fad448b1 | |||
73f66eb282 |
@ -3,7 +3,7 @@ APP_ENV=local
|
|||||||
APP_KEY=
|
APP_KEY=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
|
|
||||||
LOG_CHANNEL=stderr
|
LOG_CHANNEL=single
|
||||||
|
|
||||||
CACHE_DRIVER=array
|
CACHE_DRIVER=array
|
||||||
QUEUE_CONNECTION=sync
|
QUEUE_CONNECTION=sync
|
||||||
|
@ -3,7 +3,7 @@ run-name: ${{ gitea.actor }} Building Docker Image 🐳
|
|||||||
on: [push]
|
on: [push]
|
||||||
env:
|
env:
|
||||||
DOCKER_HOST: tcp://127.0.0.1:2375
|
DOCKER_HOST: tcp://127.0.0.1:2375
|
||||||
ASSETS: 2d732e5
|
ASSETS: 2.2.2
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
|
@ -39,57 +39,6 @@ class Attribute implements \Countable, \ArrayAccess
|
|||||||
private const SYNTAX_CERTIFICATE = '1.3.6.1.4.1.1466.115.121.1.8';
|
private const SYNTAX_CERTIFICATE = '1.3.6.1.4.1.1466.115.121.1.8';
|
||||||
private const SYNTAX_CERTIFICATE_LIST = '1.3.6.1.4.1.1466.115.121.1.9';
|
private const SYNTAX_CERTIFICATE_LIST = '1.3.6.1.4.1.1466.115.121.1.9';
|
||||||
|
|
||||||
/*
|
|
||||||
# Has the attribute been modified
|
|
||||||
protected $modified = false;
|
|
||||||
# Is the attribute being deleted because of an object class removal
|
|
||||||
protected $forcedelete = false;
|
|
||||||
# Is the attribute visible
|
|
||||||
protected $visible = false;
|
|
||||||
protected $forcehide = false;
|
|
||||||
# Is the attribute modifiable
|
|
||||||
protected $readonly = false;
|
|
||||||
# LDAP attribute type MUST/MAY
|
|
||||||
protected $ldaptype = null;
|
|
||||||
# Attribute property type (eg password, select, multiselect)
|
|
||||||
protected $type = '';
|
|
||||||
# Attribute value to keep unique
|
|
||||||
protected $unique = false;
|
|
||||||
|
|
||||||
# Display parameters
|
|
||||||
protected $display = '';
|
|
||||||
protected $icon = '';
|
|
||||||
protected $hint = '';
|
|
||||||
# Helper details
|
|
||||||
protected $helper = array();
|
|
||||||
protected $helpervalue = array();
|
|
||||||
# Onchange details
|
|
||||||
protected $onchange = array();
|
|
||||||
# Show spacer after this attribute is rendered
|
|
||||||
protected $spacer = false;
|
|
||||||
protected $verify = false;
|
|
||||||
|
|
||||||
# Component size
|
|
||||||
protected $size = 0;
|
|
||||||
# Value max length
|
|
||||||
protected $maxlength = 0;
|
|
||||||
# Text Area sizings
|
|
||||||
protected $cols = 0;
|
|
||||||
protected $rows = 0;
|
|
||||||
|
|
||||||
# Public for sorting
|
|
||||||
public $page = 1;
|
|
||||||
public $order = 255;
|
|
||||||
public $ordersort = 255;
|
|
||||||
|
|
||||||
# Schema Aliases for this attribute (stored in lowercase)
|
|
||||||
protected $aliases = array();
|
|
||||||
|
|
||||||
# Configuration for automatically generated values
|
|
||||||
protected $autovalue = array();
|
|
||||||
protected $postvalue = array();
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an Attribute
|
* Create an Attribute
|
||||||
*
|
*
|
||||||
@ -115,24 +64,10 @@ class Attribute implements \Countable, \ArrayAccess
|
|||||||
$soc = config('server')->schema('objectclasses',$objectclass);
|
$soc = config('server')->schema('objectclasses',$objectclass);
|
||||||
|
|
||||||
if ($soc) {
|
if ($soc) {
|
||||||
$this->oc->push($soc->oid);
|
$this->oc->push($soc->name);
|
||||||
$this->oc = $this->oc->merge($soc->getParents()->pluck('oid'));
|
$this->oc = $this->oc->merge($soc->getParents()->pluck('name'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
# Should this attribute be hidden
|
|
||||||
if ($server->isAttrHidden($this->name))
|
|
||||||
$this->forcehide = true;
|
|
||||||
|
|
||||||
# Should this attribute value be read only
|
|
||||||
if ($server->isAttrReadOnly($this->name))
|
|
||||||
$this->readonly = true;
|
|
||||||
|
|
||||||
# Should this attribute value be unique
|
|
||||||
if ($server->isAttrUnique($this->name))
|
|
||||||
$this->unique = true;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __call(string $name,array $arguments)
|
public function __call(string $name,array $arguments)
|
||||||
@ -255,6 +190,21 @@ class Attribute implements \Countable, \ArrayAccess
|
|||||||
->get($tag,[]),$values)));
|
->get($tag,[]),$values)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this attribute has changes, re-render the attribute values
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getDirty(): array
|
||||||
|
{
|
||||||
|
$dirty = [];
|
||||||
|
|
||||||
|
if ($this->isDirty())
|
||||||
|
$dirty = [$this->name_lc => $this->_values->toArray()];
|
||||||
|
|
||||||
|
return $dirty;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the hints about this attribute, ie: RDN, Required, etc
|
* Return the hints about this attribute, ie: RDN, Required, etc
|
||||||
*
|
*
|
||||||
|
@ -56,6 +56,7 @@ abstract class Import
|
|||||||
{
|
{
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case static::LDAP_IMPORT_ADD:
|
case static::LDAP_IMPORT_ADD:
|
||||||
|
case static::LDAP_IMPORT_MODIFY:
|
||||||
try {
|
try {
|
||||||
$o->save();
|
$o->save();
|
||||||
|
|
||||||
@ -65,15 +66,17 @@ abstract class Import
|
|||||||
if ($e->getDetailedError())
|
if ($e->getDetailedError())
|
||||||
return collect([
|
return collect([
|
||||||
'dn'=>$o->getDN(),
|
'dn'=>$o->getDN(),
|
||||||
'result'=>sprintf('%d: %s (%s)',
|
'link'=>$o->getDNSecure(),
|
||||||
|
'result'=>sprintf('%d: %s%s',
|
||||||
($x=$e->getDetailedError())->getErrorCode(),
|
($x=$e->getDetailedError())->getErrorCode(),
|
||||||
$x->getErrorMessage(),
|
$x->getErrorMessage(),
|
||||||
$x->getDiagnosticMessage(),
|
$x->getDiagnosticMessage() ? ' ('.$x->getDiagnosticMessage().')' : '',
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
else
|
else
|
||||||
return collect([
|
return collect([
|
||||||
'dn'=>$o->getDN(),
|
'dn'=>$o->getDN(),
|
||||||
|
'link'=>$o->getDNSecure(),
|
||||||
'result'=>sprintf('%d: %s',
|
'result'=>sprintf('%d: %s',
|
||||||
$e->getCode(),
|
$e->getCode(),
|
||||||
$e->getMessage(),
|
$e->getMessage(),
|
||||||
@ -81,9 +84,13 @@ abstract class Import
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log::debug(sprintf('%s:Import Commited',self::LOGKEY));
|
Log::debug(sprintf('%s:= Import Commited',self::LOGKEY));
|
||||||
|
|
||||||
return collect(['dn'=>$o->getDN(),'result'=>__('Created')]);
|
return collect([
|
||||||
|
'dn'=>$o->getDN(),
|
||||||
|
'link'=>$o->getDNSecure(),
|
||||||
|
'result'=>$action === self::LDAP_IMPORT_ADD ? __('Created') : __('Modified'),
|
||||||
|
]);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new GeneralException('Unhandled action during commit: '.$action);
|
throw new GeneralException('Unhandled action during commit: '.$action);
|
||||||
|
@ -24,7 +24,9 @@ class LDIF extends Import
|
|||||||
public function process(): Collection
|
public function process(): Collection
|
||||||
{
|
{
|
||||||
$c = 0;
|
$c = 0;
|
||||||
$action = NULL;
|
$action = self::LDAP_IMPORT_ADD; // Assume add mode
|
||||||
|
$subaction = 'add'; // Assume add
|
||||||
|
$dn = NULL;
|
||||||
$attribute = NULL;
|
$attribute = NULL;
|
||||||
$base64encoded = FALSE;
|
$base64encoded = FALSE;
|
||||||
$o = NULL;
|
$o = NULL;
|
||||||
@ -32,23 +34,38 @@ class LDIF extends Import
|
|||||||
$version = NULL;
|
$version = NULL;
|
||||||
$result = collect();
|
$result = collect();
|
||||||
|
|
||||||
// @todo When renaming DNs, the hotlink should point to the new entry on success, or the old entry on failure.
|
|
||||||
foreach (preg_split('/(\r?\n|\r)/',$this->input) as $line) {
|
foreach (preg_split('/(\r?\n|\r)/',$this->input) as $line) {
|
||||||
$c++;
|
$c++;
|
||||||
Log::debug(sprintf('%s:LDIF Line [%s]',self::LOGKEY,$line));
|
Log::debug(sprintf('%s:LDIF Line [%s] (%d)',self::LOGKEY,$line,$c));
|
||||||
$line = trim($line);
|
$line = trim($line);
|
||||||
|
|
||||||
// If the line starts with a comment, ignore it
|
// If the line starts with a comment, ignore it
|
||||||
if (preg_match('/^#/',$line))
|
if (preg_match('/^#/',$line))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// If the line starts with a dash, its more updates to the same entry
|
||||||
|
if (preg_match('/^-/',$line)) {
|
||||||
|
Log::debug(sprintf('%s:/ DASH Line [%s] (%d)',self::LOGKEY,$line,$c),['action'=>$action,'subaction'=>$subaction,'attribute'=>$attribute,'value'=>$value]);
|
||||||
|
if ($attribute)
|
||||||
|
$o = $this->entry($o,$attribute,$subaction,$base64encoded ? base64_decode($value) : $value,$c);
|
||||||
|
|
||||||
|
$base64encoded = FALSE;
|
||||||
|
$attribute = NULL;
|
||||||
|
$value = '';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If we have a blank line, then that completes this command
|
// If we have a blank line, then that completes this command
|
||||||
if (! $line) {
|
if (! $line) {
|
||||||
if (! is_null($o)) {
|
// If we havent got a version yet, then we havent started
|
||||||
// Add the last attribute;
|
if (! $version) {
|
||||||
$o->addAttributeItem($attribute,$base64encoded ? base64_decode($value) : $value);
|
continue;
|
||||||
|
|
||||||
Log::debug(sprintf('%s:- Committing Entry [%s]',self::LOGKEY,$o->getDN()));
|
} elseif (! is_null($o)) {
|
||||||
|
if ($attribute)
|
||||||
|
$o = $this->entry($o,$attribute,$subaction,$base64encoded ? base64_decode($value) : $value,$c);
|
||||||
|
|
||||||
|
Log::debug(sprintf('%s:- Committing Entry (More) [%s]',self::LOGKEY,$o->getDN()));
|
||||||
|
|
||||||
// Commit
|
// Commit
|
||||||
$result->push($this->commit($o,$action));
|
$result->push($this->commit($o,$action));
|
||||||
@ -59,27 +76,123 @@ class LDIF extends Import
|
|||||||
$base64encoded = FALSE;
|
$base64encoded = FALSE;
|
||||||
$attribute = NULL;
|
$attribute = NULL;
|
||||||
$value = '';
|
$value = '';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new GeneralException(sprintf('Processing Error - Line exists [%s] on (%d) but object is NULL',$line,$c));
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$m = [];
|
$m = [];
|
||||||
preg_match('/^([a-zA-Z0-9;-]+)(:+)\s+(.*)$/',$line,$m);
|
preg_match('/^([a-zA-Z0-9;-]+)(:+)\s*(.*)$/',$line,$m);
|
||||||
|
|
||||||
|
// If $m is NULL, then this is the 2nd (or more) line of a base64 encoded value
|
||||||
|
if (! $m) {
|
||||||
|
$value .= $line;
|
||||||
|
Log::debug(sprintf('%s:+ attribute [%s] appending [%s] (%d)',self::LOGKEY,$attribute,$line,$c));
|
||||||
|
|
||||||
|
// add to last attr value
|
||||||
|
continue;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// If base64 mode was enabled, and there is a following attribute after a base64encoded attribute, it hasnt been processed yet
|
||||||
|
if ($base64encoded) {
|
||||||
|
Log::debug(sprintf('%s:- Completing base64 attribute [%s]',self::LOGKEY,$attribute));
|
||||||
|
|
||||||
|
$o = $this->entry($o,$attribute,$subaction,base64_decode($value),$c);
|
||||||
|
|
||||||
|
$attribute = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
$base64encoded = ($m[2] === '::');
|
||||||
|
$value = $m[3];
|
||||||
|
|
||||||
|
// If we are base64encoded, we need to loop around
|
||||||
|
if ($base64encoded) {
|
||||||
|
$attribute = $m[1];
|
||||||
|
Log::debug(sprintf('%s:/ Retrieving base64 attribute [%s] (%c)',self::LOGKEY,$attribute,$c));
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// changetype needs to be after the dn, and if it isnt we'll assume add.
|
||||||
|
if ($dn && Arr::get($m,1) !== 'changetype') {
|
||||||
|
if ($action === self::LDAP_IMPORT_ADD) {
|
||||||
|
Log::debug(sprintf('%s:Creating new entry [%s]:',self::LOGKEY,$dn),['o'=>$o]);
|
||||||
|
$o = new Entry;
|
||||||
|
$o->setDn($dn);
|
||||||
|
$dn = NULL;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Log::debug(sprintf('%s:Looking for existing entry [%s]:',self::LOGKEY,$dn),['o'=>$o]);
|
||||||
|
$o = Entry::find($dn);
|
||||||
|
$dn = NULL;
|
||||||
|
|
||||||
|
if (! $o) {
|
||||||
|
$result->push(collect(['dn'=>$dn,'result'=>__('Entry doesnt exist')]));
|
||||||
|
$result->last()->put('line',$c);;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (Arr::get($m,1)) {
|
switch (Arr::get($m,1)) {
|
||||||
|
case 'dn':
|
||||||
|
$dn = $base64encoded ? base64_decode($value) : $value;
|
||||||
|
Log::debug(sprintf('%s:# Got DN [%s]:',self::LOGKEY,$dn));
|
||||||
|
|
||||||
|
$value = '';
|
||||||
|
$base64encoded = FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'changetype':
|
case 'changetype':
|
||||||
if ($m[2] !== ':')
|
if ($m[2] !== ':')
|
||||||
throw new GeneralException(sprintf('ChangeType cannot be base64 encoded set at [%d]. (line %d)',$version,$c));
|
throw new GeneralException(sprintf('changetype cannot be base64 encoded set at [%d]. (line %d)',$version,$c));
|
||||||
|
|
||||||
|
if (! is_null($o))
|
||||||
|
throw new GeneralException(sprintf('Previous Entry not complete? (line %d)',$c));
|
||||||
|
|
||||||
|
Log::debug(sprintf('%s:- Action [%s]',self::LOGKEY,$m[3]));
|
||||||
|
|
||||||
switch ($m[3]) {
|
switch ($m[3]) {
|
||||||
// if (preg_match('/^changetype:[ ]*(delete|add|modrdn|moddn|modify)/i',$lines[0])) {
|
case 'add':
|
||||||
|
$action = self::LDAP_IMPORT_ADD;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'modify':
|
||||||
|
$action = self::LDAP_IMPORT_MODIFY;
|
||||||
|
break;
|
||||||
|
|
||||||
|
/*
|
||||||
|
case 'delete':
|
||||||
|
$action = self::LDAP_IMPORT_DELETE;
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
|
||||||
|
// @todo modrdn|moddn
|
||||||
default:
|
default:
|
||||||
throw new NotImplementedException(sprintf('Unknown change type [%s]? (line %d)',$m[3],$c));
|
throw new NotImplementedException(sprintf('Unknown change type [%s]? (line %d)',$m[3],$c));
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'add':
|
||||||
|
case 'replace':
|
||||||
|
if ($action !== self::LDAP_IMPORT_MODIFY)
|
||||||
|
throw new GeneralException(sprintf('%s action can only be used with changetype: modify (line %d)',$m[1],$c));
|
||||||
|
|
||||||
|
$subaction = $m[1];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'delete':
|
||||||
|
$subaction = $m[1];
|
||||||
|
$attribute = $m[3];
|
||||||
|
$value = NULL;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'version':
|
case 'version':
|
||||||
if (! is_null($version))
|
if (! is_null($version))
|
||||||
throw new VersionException(sprintf('Version has already been set at [%d]. (line %d)',$version,$c));
|
throw new VersionException(sprintf('Version has already been set at [%d]. (line %d)',$version,$c));
|
||||||
@ -92,49 +205,14 @@ class LDIF extends Import
|
|||||||
|
|
||||||
// Treat it as an attribute
|
// Treat it as an attribute
|
||||||
default:
|
default:
|
||||||
// If $m is NULL, then this is the 2nd (or more) line of a base64 encoded value
|
// Start of a new attribute
|
||||||
if (! $m) {
|
$attribute = $m[1];
|
||||||
$value .= $line;
|
Log::debug(sprintf('%s:- Working with Attribute [%s] with [%s] (%d)',self::LOGKEY,$attribute,$value,$c));
|
||||||
Log::debug(sprintf('%s:- Attribute [%s] adding [%s] (%d)',self::LOGKEY,$attribute,$line,$c));
|
|
||||||
|
|
||||||
// add to last attr value
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We are ready to create the entry or add the attribute
|
// We are ready to create the entry or add the attribute
|
||||||
if ($attribute) {
|
$o = $this->entry($o,$attribute,$subaction,$base64encoded ? base64_decode($value) : $value,$c);
|
||||||
if ($attribute === 'dn') {
|
$attribute = NULL;
|
||||||
if (! is_null($o))
|
$value = NULL;
|
||||||
throw new GeneralException(sprintf('Previous Entry not complete? (line %d)',$c));
|
|
||||||
|
|
||||||
$dn = $base64encoded ? base64_decode($value) : $value;
|
|
||||||
Log::debug(sprintf('%s:Creating new entry:',self::LOGKEY,$dn));
|
|
||||||
//$o = Entry::find($dn);
|
|
||||||
|
|
||||||
// If it doesnt exist, we'll create it
|
|
||||||
//if (! $o) {
|
|
||||||
$o = new Entry;
|
|
||||||
$o->setDn($dn);
|
|
||||||
//}
|
|
||||||
|
|
||||||
$action = self::LDAP_IMPORT_ADD;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log::debug(sprintf('%s:Adding Attribute [%s] value [%s] (%d)',self::LOGKEY,$attribute,$value,$c));
|
|
||||||
|
|
||||||
if ($value)
|
|
||||||
$o->addAttributeItem($attribute,$base64encoded ? base64_decode($value) : $value);
|
|
||||||
else
|
|
||||||
throw new GeneralException(sprintf('Attribute has no value [%s] (line %d)',$attribute,$c));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start of a new attribute
|
|
||||||
$base64encoded = ($m[2] === '::');
|
|
||||||
$attribute = $m[1];
|
|
||||||
$value = $m[3];
|
|
||||||
|
|
||||||
Log::debug(sprintf('%s:- New Attribute [%s] with [%s] (%d)',self::LOGKEY,$attribute,$value,$c));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($version !== 1)
|
if ($version !== 1)
|
||||||
@ -142,11 +220,11 @@ class LDIF extends Import
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We may still have a pending action
|
// We may still have a pending action
|
||||||
if ($action) {
|
if ($o) {
|
||||||
// Add the last attribute;
|
if ($attribute)
|
||||||
$o->addAttributeItem($attribute,$base64encoded ? base64_decode($value) : $value);
|
$o = $this->entry($o,$attribute,$subaction,$base64encoded ? base64_decode($value) : $value,$c);
|
||||||
|
|
||||||
Log::debug(sprintf('%s:- Committing Entry [%s]',self::LOGKEY,$o->getDN()));
|
Log::debug(sprintf('%s:- Committing Entry (Final) [%s]',self::LOGKEY,$o->getDN()));
|
||||||
|
|
||||||
// Commit
|
// Commit
|
||||||
$result->push($this->commit($o,$action));
|
$result->push($this->commit($o,$action));
|
||||||
@ -156,75 +234,46 @@ class LDIF extends Import
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function xreadEntry() {
|
private function entry(Entry $o,string $attribute,string $subaction,?string $value,int $c): Entry
|
||||||
static $haveVersion = FALSE;
|
{
|
||||||
|
Log::debug(sprintf('%s:. %s Attribute [%s] value [%s] (%d)',self::LOGKEY,$subaction,$attribute,$value,$c));
|
||||||
|
|
||||||
if ($lines = $this->nextLines()) {
|
switch ($subaction) {
|
||||||
|
case 'add':
|
||||||
|
if (! $value)
|
||||||
|
throw new GeneralException(sprintf('Attribute has no value [%s] (line %d)',$attribute,$c));
|
||||||
|
|
||||||
$server = $this->getServer();
|
$o->addAttributeItem($attribute,$value);
|
||||||
|
break;
|
||||||
|
|
||||||
# The first line should be the DN
|
case 'replace':
|
||||||
if (preg_match('/^dn:/',$lines[0])) {
|
if (! $value)
|
||||||
list($text,$dn) = $this->getAttrValue(array_shift($lines));
|
throw new GeneralException(sprintf('Attribute has no value [%s] (line %d)',$attribute,$c));
|
||||||
|
|
||||||
# The second line should be our changetype
|
if (! ($x=$o->getObject(($xx=strstr($attribute,';',TRUE)) ?: $attribute)))
|
||||||
if (preg_match('/^changetype:[ ]*(delete|add|modrdn|moddn|modify)/i',$lines[0])) {
|
throw new \Exception(sprintf('Attribute [%s] doesnt exist in [%s] (line %d)',$attribute,$o->getDn(),$c));
|
||||||
$attrvalue = $this->getAttrValue($lines[0]);
|
|
||||||
$changetype = $attrvalue[1];
|
// If the attribute has changed, we'll assume this is an additional value for it
|
||||||
array_shift($lines);
|
if ($x->isDirty()) {
|
||||||
|
Log::debug(sprintf('%s:/ Attribute [%s] has changed, assuming add',self::LOGKEY,$attribute));
|
||||||
|
$o->addAttributeItem($attribute,$value);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
$changetype = 'add';
|
$o->{$attribute} = [Entry::TAG_NOTAG=>[$value]];
|
||||||
|
|
||||||
$this->template = new Template($this->server_id,NULL,NULL,$changetype);
|
break;
|
||||||
|
|
||||||
switch ($changetype) {
|
case 'delete':
|
||||||
case 'add':
|
if (! $o->getObject($attribute))
|
||||||
$rdn = get_rdn($dn);
|
throw new \Exception(sprintf('Attribute [%s] doesnt exist in [%s] (line %d)',$attribute,$o->getDn(),$c));
|
||||||
$container = $server->getContainer($dn);
|
|
||||||
|
|
||||||
$this->template->setContainer($container);
|
$o->{$attribute} = [];
|
||||||
$this->template->accept();
|
break;
|
||||||
|
|
||||||
$this->getAddDetails($lines);
|
default:
|
||||||
$this->template->setRDNAttributes($rdn);
|
throw new \Exception('Unknown subaction:'.$subaction);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->template;
|
return $o;
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'modify':
|
|
||||||
if (! $server->dnExists($dn))
|
|
||||||
return $this->error(sprintf('%s %s',_('DN does not exist'),$dn),$lines);
|
|
||||||
|
|
||||||
$this->template->setDN($dn);
|
|
||||||
$this->template->accept(FALSE,TRUE);
|
|
||||||
|
|
||||||
return $this->getModifyDetails($lines);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'moddn':
|
|
||||||
case 'modrdn':
|
|
||||||
if (! $server->dnExists($dn))
|
|
||||||
return $this->error(sprintf('%s %s',_('DN does not exist'),$dn),$lines);
|
|
||||||
|
|
||||||
$this->template->setDN($dn);
|
|
||||||
$this->template->accept();
|
|
||||||
|
|
||||||
return $this->getModRDNAttributes($lines);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (! $server->dnExists($dn))
|
|
||||||
return $this->error(_('Unknown change type'),$lines);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else
|
|
||||||
return $this->error(_('A valid dn line is required'),$lines);
|
|
||||||
|
|
||||||
} else
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -181,8 +181,11 @@ final class Server
|
|||||||
$result = collect();
|
$result = collect();
|
||||||
|
|
||||||
// @note: Incase our rootDSE didnt return a namingcontext, we'll have no base DNs
|
// @note: Incase our rootDSE didnt return a namingcontext, we'll have no base DNs
|
||||||
foreach ($namingcontexts as $dn)
|
foreach ($namingcontexts as $dn) {
|
||||||
$result->push(self::get($dn)->read()->find($dn));
|
$o = self::get($dn)->read()->find($dn);
|
||||||
|
$o->setBase();
|
||||||
|
$result->push($o);
|
||||||
|
}
|
||||||
|
|
||||||
return $result->filter()->sort(fn($item)=>$item->sort_key);
|
return $result->filter()->sort(fn($item)=>$item->sort_key);
|
||||||
});
|
});
|
||||||
@ -326,6 +329,11 @@ final class Server
|
|||||||
: NULL;
|
: NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hasMore(): bool
|
||||||
|
{
|
||||||
|
return (new Entry)->hasMore();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does this server support RFC3666 language tags
|
* Does this server support RFC3666 language tags
|
||||||
* OID: 1.3.6.1.4.1.4203.1.5.4
|
* OID: 1.3.6.1.4.1.4203.1.5.4
|
||||||
@ -455,11 +463,11 @@ final class Server
|
|||||||
foreach ($o->attributes as $attribute) {
|
foreach ($o->attributes as $attribute) {
|
||||||
if (($attrid = $this->schema('attributetypes')->search(fn($item)=>$item->oid === $attribute->oid)) !== FALSE) {
|
if (($attrid = $this->schema('attributetypes')->search(fn($item)=>$item->oid === $attribute->oid)) !== FALSE) {
|
||||||
// Add Used In.
|
// Add Used In.
|
||||||
$this->attributetypes[$attrid]->addUsedInObjectClass($o->oid,$o->isStructural());
|
$this->attributetypes[$attrid]->addUsedInObjectClass($o->name,$o->isStructural());
|
||||||
|
|
||||||
// Add Required By.
|
// Add Required By.
|
||||||
if ($attribute->is_must)
|
if ($attribute->is_must)
|
||||||
$this->attributetypes[$attrid]->addRequiredByObjectClass($o->oid,$o->isStructural());
|
$this->attributetypes[$attrid]->addRequiredByObjectClass($o->name,$o->isStructural());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -501,10 +509,20 @@ final class Server
|
|||||||
* Get the Schema DN
|
* Get the Schema DN
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
* @throws ObjectNotFoundException
|
|
||||||
*/
|
*/
|
||||||
public function schemaDN(): string
|
public function schemaDN(): string
|
||||||
{
|
{
|
||||||
return Arr::get($this->rootDSE->subschemasubentry,0);
|
return Arr::get($this->rootDSE->subschemasubentry,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function subordinates(string $dn,array $attrs=['dn']): ?LDAPCollection
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->get(
|
||||||
|
dn: $dn,
|
||||||
|
attrs: array_merge($attrs,[]))
|
||||||
|
->rawFilter('(hassubordinates=TRUE)')
|
||||||
|
->search()
|
||||||
|
->get() ?: NULL;
|
||||||
|
}
|
||||||
}
|
}
|
@ -38,7 +38,11 @@ class Template
|
|||||||
// @todo Make sure we have a structural objectclass, or make the template invalid
|
// @todo Make sure we have a structural objectclass, or make the template invalid
|
||||||
$this->template = collect(json_decode($td->get($file),null,512,JSON_OBJECT_AS_ARRAY|JSON_THROW_ON_ERROR));
|
$this->template = collect(json_decode($td->get($file),null,512,JSON_OBJECT_AS_ARRAY|JSON_THROW_ON_ERROR));
|
||||||
|
|
||||||
} catch (\JsonException $e) {
|
// Also test the regex is valid.
|
||||||
|
if ($this->template->has('regexp'))
|
||||||
|
preg_match($this->regexp,'');
|
||||||
|
|
||||||
|
} catch (\ErrorException|\JsonException $e) {
|
||||||
$this->invalid = TRUE;
|
$this->invalid = TRUE;
|
||||||
$this->reason = $e->getMessage();
|
$this->reason = $e->getMessage();
|
||||||
}
|
}
|
||||||
@ -411,6 +415,7 @@ class Template
|
|||||||
preg_match_all('/(\d+)/',trim($match_subst),$substrarray);
|
preg_match_all('/(\d+)/',trim($match_subst),$substrarray);
|
||||||
|
|
||||||
$delimiter = ($match_delim === '') ? ' ' : preg_quote($match_delim);
|
$delimiter = ($match_delim === '') ? ' ' : preg_quote($match_delim);
|
||||||
|
$result .= sprintf("%s = get_attribute('%s');\n",$match_attr,$match_attr);
|
||||||
$result .= sprintf(" %s = %s.split('%s')[%s];\n",$match_attr,$match_attr,$delimiter,$substrarray[1][0] ?? '0');
|
$result .= sprintf(" %s = %s.split('%s')[%s];\n",$match_attr,$match_attr,$delimiter,$substrarray[1][0] ?? '0');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,7 +24,7 @@ class AjaxController extends Controller
|
|||||||
{
|
{
|
||||||
return Server::baseDNs()
|
return Server::baseDNs()
|
||||||
->map(fn($item)=> [
|
->map(fn($item)=> [
|
||||||
'title'=>$item->getRdn(),
|
'title'=>$item->is_base ? $item->getDn() : $item->getRdn(),
|
||||||
'item'=>$item->getDNSecure(),
|
'item'=>$item->getDNSecure(),
|
||||||
'lazy'=>TRUE,
|
'lazy'=>TRUE,
|
||||||
'icon'=>'fa-fw fas fa-sitemap',
|
'icon'=>'fa-fw fas fa-sitemap',
|
||||||
@ -67,6 +67,17 @@ class AjaxController extends Controller
|
|||||||
]
|
]
|
||||||
: []
|
: []
|
||||||
)
|
)
|
||||||
|
->push(
|
||||||
|
config('server')->hasMore()
|
||||||
|
? [
|
||||||
|
'title'=>sprintf('[%s]',__('Size Limit')),
|
||||||
|
'item'=>'',
|
||||||
|
'lazy'=>FALSE,
|
||||||
|
'icon'=>'fas fa-fw fa-triangle-exclamation text-danger',
|
||||||
|
'tooltip'=>__('There may be more entries'),
|
||||||
|
]
|
||||||
|
: []
|
||||||
|
)
|
||||||
->filter()
|
->filter()
|
||||||
->values();
|
->values();
|
||||||
}
|
}
|
||||||
@ -113,4 +124,27 @@ class AjaxController extends Controller
|
|||||||
'may' => $oc->getMayAttrs()->pluck('name'),
|
'may' => $oc->getMayAttrs()->pluck('name'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function subordinates(?string $dn=NULL): array
|
||||||
|
{
|
||||||
|
$dn = $dn ? Crypt::decryptString($dn) : '';
|
||||||
|
|
||||||
|
// Sometimes our key has a command, so we'll ignore it
|
||||||
|
if (str_starts_with($dn,'*') && ($x=strpos($dn,'|')))
|
||||||
|
$dn = substr($dn,$x+1);
|
||||||
|
|
||||||
|
$result = collect();
|
||||||
|
// If no DN, we'll find all children
|
||||||
|
if (! $dn)
|
||||||
|
foreach (Server::baseDNs() as $base)
|
||||||
|
$result = $result->merge(config('server')
|
||||||
|
->subordinates($base->getDN()));
|
||||||
|
else
|
||||||
|
$result = config('server')
|
||||||
|
->subordinates(collect(explode(',',$dn))->last());
|
||||||
|
|
||||||
|
return
|
||||||
|
$result->map(fn($item)=>['id'=>$item->getDNSecure(),'value'=>$item->getDN()])
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
}
|
}
|
@ -112,6 +112,60 @@ class HomeController extends Controller
|
|||||||
->with('updated',FALSE);
|
->with('updated',FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function entry_copy_move(Request $request): \Illuminate\Http\RedirectResponse|\Illuminate\View\View
|
||||||
|
{
|
||||||
|
$from_dn = Crypt::decryptString($request->post('dn'));
|
||||||
|
Log::info(sprintf('%s:Renaming [%s] to [%s]',self::LOGKEY,$from_dn,$request->post('to_dn')));
|
||||||
|
|
||||||
|
$o = clone config('server')->fetch($from_dn);
|
||||||
|
|
||||||
|
if (! $o)
|
||||||
|
return back()
|
||||||
|
->withInput()
|
||||||
|
->with('note',__('DN doesnt exist'));
|
||||||
|
|
||||||
|
$o->setDN($request->post('to_dn'));
|
||||||
|
$o->exists = FALSE;
|
||||||
|
|
||||||
|
// Add the RDN attribute to match the new RDN
|
||||||
|
$rdn = collect(explode(',',$request->post('to_dn')))->first();
|
||||||
|
|
||||||
|
list($attr,$value) = explode('=',$rdn);
|
||||||
|
$o->{$attr} = [Entry::TAG_NOTAG => $o->getObject($attr)->tagValuesOld(Entry::TAG_NOTAG)->push($value)->unique()];
|
||||||
|
|
||||||
|
Log::info(sprintf('%s:Copying [%s] to [%s]',self::LOGKEY,$from_dn,$o->getDN()));
|
||||||
|
|
||||||
|
try {
|
||||||
|
$o->save();
|
||||||
|
|
||||||
|
} catch (LdapRecordException $e) {
|
||||||
|
return Redirect::to('/')
|
||||||
|
->withInput(['_key'=>Crypt::encryptString('*dn|'.$from_dn)])
|
||||||
|
->with('failed',sprintf('%s: %s - %s: %s',
|
||||||
|
__('LDAP Server Error Code'),
|
||||||
|
$e->getDetailedError()?->getErrorCode() ?: $e->getMessage(),
|
||||||
|
$e->getDetailedError()?->getErrorMessage() ?: $e->getFile(),
|
||||||
|
$e->getDetailedError()?->getDiagnosticMessage() ?: $e->getLine(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->post('delete') && $request->post('delete') === '1') {
|
||||||
|
Log::info(sprintf('%s:Deleting [%s] after copy',self::LOGKEY,$from_dn));
|
||||||
|
|
||||||
|
$x = $this->entry_delete($request);
|
||||||
|
|
||||||
|
return ($x->getSession()->has('success'))
|
||||||
|
? Redirect::to('/')
|
||||||
|
->withInput(['_key'=>Crypt::encryptString('*dn|'.$o->getDN())])
|
||||||
|
->with('success',__('Entry copied and deleted'))
|
||||||
|
: $x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Redirect::to('/')
|
||||||
|
->withInput(['_key'=>Crypt::encryptString('*dn|'.$o->getDN())])
|
||||||
|
->with('success',__('Entry copied'));
|
||||||
|
}
|
||||||
|
|
||||||
public function entry_create(EntryAddRequest $request): \Illuminate\Http\RedirectResponse
|
public function entry_create(EntryAddRequest $request): \Illuminate\Http\RedirectResponse
|
||||||
{
|
{
|
||||||
$key = $this->request_key($request,collect(old()));
|
$key = $this->request_key($request,collect(old()));
|
||||||
@ -154,7 +208,7 @@ class HomeController extends Controller
|
|||||||
->with('failed',sprintf('%s: %s - %s: %s',
|
->with('failed',sprintf('%s: %s - %s: %s',
|
||||||
__('LDAP Server Error Code'),
|
__('LDAP Server Error Code'),
|
||||||
$e->getDetailedError()->getErrorCode(),
|
$e->getDetailedError()->getErrorCode(),
|
||||||
__($e->getDetailedError()->getErrorMessage()),
|
$e->getDetailedError()->getErrorMessage(),
|
||||||
$e->getDetailedError()->getDiagnosticMessage(),
|
$e->getDetailedError()->getDiagnosticMessage(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -377,7 +431,7 @@ class HomeController extends Controller
|
|||||||
->with('failed',sprintf('%s: %s - %s: %s',
|
->with('failed',sprintf('%s: %s - %s: %s',
|
||||||
__('LDAP Server Error Code'),
|
__('LDAP Server Error Code'),
|
||||||
$e->getDetailedError()->getErrorCode(),
|
$e->getDetailedError()->getErrorCode(),
|
||||||
__($e->getDetailedError()->getErrorMessage()),
|
$e->getDetailedError()->getErrorMessage(),
|
||||||
$e->getDetailedError()->getDiagnosticMessage(),
|
$e->getDetailedError()->getDiagnosticMessage(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -435,8 +489,8 @@ class HomeController extends Controller
|
|||||||
->with('dn',$key['dn'])
|
->with('dn',$key['dn'])
|
||||||
->with('o',$o)
|
->with('o',$o)
|
||||||
->with('page_actions',collect([
|
->with('page_actions',collect([
|
||||||
'copy'=>FALSE,
|
|
||||||
'create'=>($x=($o->getObjects()->except('entryuuid')->count() > 0)),
|
'create'=>($x=($o->getObjects()->except('entryuuid')->count() > 0)),
|
||||||
|
'copy'=>$x,
|
||||||
'delete'=>(! is_null($xx=$o->getObject('hassubordinates')->value)) && ($xx === 'FALSE'),
|
'delete'=>(! is_null($xx=$o->getObject('hassubordinates')->value)) && ($xx === 'FALSE'),
|
||||||
'edit'=>$x,
|
'edit'=>$x,
|
||||||
'export'=>$x,
|
'export'=>$x,
|
||||||
@ -484,9 +538,13 @@ class HomeController extends Controller
|
|||||||
$result = $import->process();
|
$result = $import->process();
|
||||||
|
|
||||||
} catch (NotImplementedException $e) {
|
} catch (NotImplementedException $e) {
|
||||||
|
Log::error(sprintf('Import Exception [%s]',$e->getMessage()));
|
||||||
|
|
||||||
abort(555,$e->getMessage());
|
abort(555,$e->getMessage());
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
Log::error(sprintf('Import Exception [%s]',$e->getMessage()));
|
||||||
|
|
||||||
abort(598,$e->getMessage());
|
abort(598,$e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ class EntryAddRequest extends FormRequest
|
|||||||
Log::debug(sprintf('%s:Autovalue for Attribute [%s] in Session [%s] Retrieved [%d](%d)',self::LOGKEY,$attr,Session::id(),$cache,$value));
|
Log::debug(sprintf('%s:Autovalue for Attribute [%s] in Session [%s] Retrieved [%d](%d)',self::LOGKEY,$attr,Session::id(),$cache,$value));
|
||||||
|
|
||||||
if ($cache !== (int)$value)
|
if ($cache !== (int)$value)
|
||||||
$fail(__('Lock expired, please re-submit.'));
|
$fail(__('Lock expired, please re-submit'));
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
|
@ -39,6 +39,7 @@ class Entry extends Model
|
|||||||
|
|
||||||
// For new entries, this is the container that this entry will be stored in
|
// For new entries, this is the container that this entry will be stored in
|
||||||
private string $rdnbase;
|
private string $rdnbase;
|
||||||
|
private(set) bool $is_base;
|
||||||
|
|
||||||
/* OVERRIDES */
|
/* OVERRIDES */
|
||||||
|
|
||||||
@ -60,7 +61,7 @@ class Entry extends Model
|
|||||||
$to = new Template($file);
|
$to = new Template($file);
|
||||||
|
|
||||||
if ($to->invalid) {
|
if ($to->invalid) {
|
||||||
Log::debug(sprintf('Template [%s] is not valid (%s) - ignoring',$file,$to->reason));
|
Log::alert(sprintf('Template [%s] is not valid (%s) - ignoring',$file,$to->reason));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$templates->put($file,new Template($file));
|
$templates->put($file,new Template($file));
|
||||||
@ -91,14 +92,39 @@ class Entry extends Model
|
|||||||
public function getAttributes(): array
|
public function getAttributes(): array
|
||||||
{
|
{
|
||||||
return $this->objects
|
return $this->objects
|
||||||
|
->filter(fn($item)=>(! $item->is_internal))
|
||||||
->flatMap(fn($item)=>
|
->flatMap(fn($item)=>
|
||||||
($item->no_attr_tags)
|
$item->no_attr_tags
|
||||||
? [strtolower($item->name)=>$item->values]
|
? [strtolower($item->name)=>$item->values]
|
||||||
: $item->values
|
: $item->values
|
||||||
->flatMap(fn($v,$k)=>[strtolower($item->name.($k !== self::TAG_NOTAG ? ';'.$k : ''))=>$v]))
|
->flatMap(fn($v,$k)=>[strtolower($item->name.(($k !== self::TAG_NOTAG) ? ';'.$k : ''))=>$v]))
|
||||||
->toArray();
|
->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This replaces the model's get dirty, given that we store LDAP attributes in $this->objects, replacing
|
||||||
|
* $this->original/$this->attributes
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getDirty(): array
|
||||||
|
{
|
||||||
|
$result = collect();
|
||||||
|
|
||||||
|
foreach ($this->objects as $o)
|
||||||
|
if ($o->isDirty())
|
||||||
|
$result = $result->merge($o->getDirty());
|
||||||
|
|
||||||
|
$result = $result
|
||||||
|
->flatMap(function($item,$attr) {
|
||||||
|
return ($x=collect($item))->count()
|
||||||
|
? $x->flatMap(fn($v,$k)=>[strtolower($attr.(($k !== self::TAG_NOTAG) ? ';'.$k : ''))=>$v])
|
||||||
|
: [strtolower($attr)=>[]];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $result->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the new and old values for a given key are equivalent.
|
* Determine if the new and old values for a given key are equivalent.
|
||||||
*/
|
*/
|
||||||
@ -452,7 +478,7 @@ class Entry extends Model
|
|||||||
$ot = $this->getOtherTags();
|
$ot = $this->getOtherTags();
|
||||||
|
|
||||||
$cache[$tag ?: '_all_'] = $this->objects
|
$cache[$tag ?: '_all_'] = $this->objects
|
||||||
->filter(fn($item)=>(! $item->is_internal) && ((! $item->no_attr_tags) || (! $tag) || ($tag === Entry::TAG_NOTAG)))
|
->filter(fn($item)=>(! $item->is_internal) && ((! $item->no_attr_tags) || (! $tag) || ($tag === self::TAG_NOTAG)))
|
||||||
->filter(fn($item)=>(! $tag) || $ot->has($item->name_lc) || count($item->tagValues($tag)) > 0);
|
->filter(fn($item)=>(! $tag) || $ot->has($item->name_lc) || count($item->tagValues($tag)) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,6 +600,16 @@ class Entry extends Model
|
|||||||
return [$attribute,$tags];
|
return [$attribute,$tags];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this entry a baseDN
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setBase(): void
|
||||||
|
{
|
||||||
|
$this->is_base = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
public function setRDNBase(string $bdn): void
|
public function setRDNBase(string $bdn): void
|
||||||
{
|
{
|
||||||
if ($this->exists)
|
if ($this->exists)
|
||||||
|
215
composer.lock
generated
215
composer.lock
generated
@ -1199,16 +1199,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v12.19.3",
|
"version": "v12.20.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "4e6ec689ef704bb4bd282f29d9dd658dfb4fb262"
|
"reference": "1b9a00f8caf5503c92aa436279172beae1a484ff"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/4e6ec689ef704bb4bd282f29d9dd658dfb4fb262",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/1b9a00f8caf5503c92aa436279172beae1a484ff",
|
||||||
"reference": "4e6ec689ef704bb4bd282f29d9dd658dfb4fb262",
|
"reference": "1b9a00f8caf5503c92aa436279172beae1a484ff",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1410,20 +1410,20 @@
|
|||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2025-06-18T12:56:23+00:00"
|
"time": "2025-07-08T15:02:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/prompts",
|
"name": "laravel/prompts",
|
||||||
"version": "v0.3.5",
|
"version": "v0.3.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/prompts.git",
|
"url": "https://github.com/laravel/prompts.git",
|
||||||
"reference": "57b8f7efe40333cdb925700891c7d7465325d3b1"
|
"reference": "86a8b692e8661d0fb308cec64f3d176821323077"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1",
|
"url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077",
|
||||||
"reference": "57b8f7efe40333cdb925700891c7d7465325d3b1",
|
"reference": "86a8b692e8661d0fb308cec64f3d176821323077",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1467,22 +1467,22 @@
|
|||||||
"description": "Add beautiful and user-friendly forms to your command-line applications.",
|
"description": "Add beautiful and user-friendly forms to your command-line applications.",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/laravel/prompts/issues",
|
"issues": "https://github.com/laravel/prompts/issues",
|
||||||
"source": "https://github.com/laravel/prompts/tree/v0.3.5"
|
"source": "https://github.com/laravel/prompts/tree/v0.3.6"
|
||||||
},
|
},
|
||||||
"time": "2025-02-11T13:34:40+00:00"
|
"time": "2025-07-07T14:17:42+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/sanctum",
|
"name": "laravel/sanctum",
|
||||||
"version": "v4.1.1",
|
"version": "v4.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/sanctum.git",
|
"url": "https://github.com/laravel/sanctum.git",
|
||||||
"reference": "a360a6a1fd2400ead4eb9b6a9c1bb272939194f5"
|
"reference": "e4c09e69aecd5a383e0c1b85a6bb501c997d7491"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/sanctum/zipball/a360a6a1fd2400ead4eb9b6a9c1bb272939194f5",
|
"url": "https://api.github.com/repos/laravel/sanctum/zipball/e4c09e69aecd5a383e0c1b85a6bb501c997d7491",
|
||||||
"reference": "a360a6a1fd2400ead4eb9b6a9c1bb272939194f5",
|
"reference": "e4c09e69aecd5a383e0c1b85a6bb501c997d7491",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1533,7 +1533,7 @@
|
|||||||
"issues": "https://github.com/laravel/sanctum/issues",
|
"issues": "https://github.com/laravel/sanctum/issues",
|
||||||
"source": "https://github.com/laravel/sanctum"
|
"source": "https://github.com/laravel/sanctum"
|
||||||
},
|
},
|
||||||
"time": "2025-04-23T13:03:38+00:00"
|
"time": "2025-07-01T15:49:32+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/serializable-closure",
|
"name": "laravel/serializable-closure",
|
||||||
@ -1850,16 +1850,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/flysystem",
|
"name": "league/flysystem",
|
||||||
"version": "3.29.1",
|
"version": "3.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/thephpleague/flysystem.git",
|
"url": "https://github.com/thephpleague/flysystem.git",
|
||||||
"reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319"
|
"reference": "2203e3151755d874bb2943649dae1eb8533ac93e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319",
|
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e",
|
||||||
"reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319",
|
"reference": "2203e3151755d874bb2943649dae1eb8533ac93e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1883,13 +1883,13 @@
|
|||||||
"composer/semver": "^3.0",
|
"composer/semver": "^3.0",
|
||||||
"ext-fileinfo": "*",
|
"ext-fileinfo": "*",
|
||||||
"ext-ftp": "*",
|
"ext-ftp": "*",
|
||||||
"ext-mongodb": "^1.3",
|
"ext-mongodb": "^1.3|^2",
|
||||||
"ext-zip": "*",
|
"ext-zip": "*",
|
||||||
"friendsofphp/php-cs-fixer": "^3.5",
|
"friendsofphp/php-cs-fixer": "^3.5",
|
||||||
"google/cloud-storage": "^1.23",
|
"google/cloud-storage": "^1.23",
|
||||||
"guzzlehttp/psr7": "^2.6",
|
"guzzlehttp/psr7": "^2.6",
|
||||||
"microsoft/azure-storage-blob": "^1.1",
|
"microsoft/azure-storage-blob": "^1.1",
|
||||||
"mongodb/mongodb": "^1.2",
|
"mongodb/mongodb": "^1.2|^2",
|
||||||
"phpseclib/phpseclib": "^3.0.36",
|
"phpseclib/phpseclib": "^3.0.36",
|
||||||
"phpstan/phpstan": "^1.10",
|
"phpstan/phpstan": "^1.10",
|
||||||
"phpunit/phpunit": "^9.5.11|^10.0",
|
"phpunit/phpunit": "^9.5.11|^10.0",
|
||||||
@ -1927,22 +1927,22 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/thephpleague/flysystem/issues",
|
"issues": "https://github.com/thephpleague/flysystem/issues",
|
||||||
"source": "https://github.com/thephpleague/flysystem/tree/3.29.1"
|
"source": "https://github.com/thephpleague/flysystem/tree/3.30.0"
|
||||||
},
|
},
|
||||||
"time": "2024-10-08T08:58:34+00:00"
|
"time": "2025-06-25T13:29:59+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/flysystem-local",
|
"name": "league/flysystem-local",
|
||||||
"version": "3.29.0",
|
"version": "3.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/thephpleague/flysystem-local.git",
|
"url": "https://github.com/thephpleague/flysystem-local.git",
|
||||||
"reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27"
|
"reference": "6691915f77c7fb69adfb87dcd550052dc184ee10"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27",
|
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10",
|
||||||
"reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27",
|
"reference": "6691915f77c7fb69adfb87dcd550052dc184ee10",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1976,9 +1976,9 @@
|
|||||||
"local"
|
"local"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0"
|
"source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0"
|
||||||
},
|
},
|
||||||
"time": "2024-08-09T21:24:39+00:00"
|
"time": "2025-05-21T10:34:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/mime-type-detection",
|
"name": "league/mime-type-detection",
|
||||||
@ -2315,16 +2315,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nesbot/carbon",
|
"name": "nesbot/carbon",
|
||||||
"version": "3.10.0",
|
"version": "3.10.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/CarbonPHP/carbon.git",
|
"url": "https://github.com/CarbonPHP/carbon.git",
|
||||||
"reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9"
|
"reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/c1397390dd0a7e0f11660f0ae20f753d88c1f3d9",
|
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00",
|
||||||
"reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9",
|
"reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2416,7 +2416,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-06-12T10:24:28+00:00"
|
"time": "2025-06-21T15:19:35+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nette/schema",
|
"name": "nette/schema",
|
||||||
@ -3262,21 +3262,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ramsey/uuid",
|
"name": "ramsey/uuid",
|
||||||
"version": "4.8.1",
|
"version": "4.9.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ramsey/uuid.git",
|
"url": "https://github.com/ramsey/uuid.git",
|
||||||
"reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28"
|
"reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/ramsey/uuid/zipball/fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28",
|
"url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0",
|
||||||
"reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28",
|
"reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13",
|
"brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13",
|
||||||
"ext-json": "*",
|
|
||||||
"php": "^8.0",
|
"php": "^8.0",
|
||||||
"ramsey/collection": "^1.2 || ^2.0"
|
"ramsey/collection": "^1.2 || ^2.0"
|
||||||
},
|
},
|
||||||
@ -3335,9 +3334,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/ramsey/uuid/issues",
|
"issues": "https://github.com/ramsey/uuid/issues",
|
||||||
"source": "https://github.com/ramsey/uuid/tree/4.8.1"
|
"source": "https://github.com/ramsey/uuid/tree/4.9.0"
|
||||||
},
|
},
|
||||||
"time": "2025-06-01T06:28:46+00:00"
|
"time": "2025-06-25T14:20:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/clock",
|
"name": "symfony/clock",
|
||||||
@ -3415,16 +3414,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44"
|
"reference": "9e27aecde8f506ba0fd1d9989620c04a87697101"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44",
|
"url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101",
|
||||||
"reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44",
|
"reference": "9e27aecde8f506ba0fd1d9989620c04a87697101",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3489,7 +3488,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v7.3.0"
|
"source": "https://github.com/symfony/console/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3505,7 +3504,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-24T10:34:04+00:00"
|
"time": "2025-06-27T19:55:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/css-selector",
|
"name": "symfony/css-selector",
|
||||||
@ -3641,16 +3640,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/error-handler",
|
"name": "symfony/error-handler",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/error-handler.git",
|
"url": "https://github.com/symfony/error-handler.git",
|
||||||
"reference": "cf68d225bc43629de4ff54778029aee6dc191b83"
|
"reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83",
|
"url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235",
|
||||||
"reference": "cf68d225bc43629de4ff54778029aee6dc191b83",
|
"reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3698,7 +3697,7 @@
|
|||||||
"description": "Provides tools to manage errors and ease debugging PHP code",
|
"description": "Provides tools to manage errors and ease debugging PHP code",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/error-handler/tree/v7.3.0"
|
"source": "https://github.com/symfony/error-handler/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3714,7 +3713,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-29T07:19:49+00:00"
|
"time": "2025-06-13T07:48:40+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/event-dispatcher",
|
"name": "symfony/event-dispatcher",
|
||||||
@ -3938,16 +3937,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/http-foundation",
|
"name": "symfony/http-foundation",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/http-foundation.git",
|
"url": "https://github.com/symfony/http-foundation.git",
|
||||||
"reference": "4236baf01609667d53b20371486228231eb135fd"
|
"reference": "23dd60256610c86a3414575b70c596e5deff6ed9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd",
|
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9",
|
||||||
"reference": "4236baf01609667d53b20371486228231eb135fd",
|
"reference": "23dd60256610c86a3414575b70c596e5deff6ed9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3997,7 +3996,7 @@
|
|||||||
"description": "Defines an object-oriented layer for the HTTP specification",
|
"description": "Defines an object-oriented layer for the HTTP specification",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/http-foundation/tree/v7.3.0"
|
"source": "https://github.com/symfony/http-foundation/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -4013,20 +4012,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-12T14:48:23+00:00"
|
"time": "2025-06-23T15:07:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/http-kernel",
|
"name": "symfony/http-kernel",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/http-kernel.git",
|
"url": "https://github.com/symfony/http-kernel.git",
|
||||||
"reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f"
|
"reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f",
|
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831",
|
||||||
"reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f",
|
"reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4111,7 +4110,7 @@
|
|||||||
"description": "Provides a structured process for converting a Request into a Response",
|
"description": "Provides a structured process for converting a Request into a Response",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/http-kernel/tree/v7.3.0"
|
"source": "https://github.com/symfony/http-kernel/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -4127,20 +4126,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-29T07:47:32+00:00"
|
"time": "2025-06-28T08:24:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/mailer",
|
"name": "symfony/mailer",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/mailer.git",
|
"url": "https://github.com/symfony/mailer.git",
|
||||||
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c"
|
"reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/mailer/zipball/0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
|
"url": "https://api.github.com/repos/symfony/mailer/zipball/b5db5105b290bdbea5ab27b89c69effcf1cb3368",
|
||||||
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
|
"reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4191,7 +4190,7 @@
|
|||||||
"description": "Helps sending emails",
|
"description": "Helps sending emails",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/mailer/tree/v7.3.0"
|
"source": "https://github.com/symfony/mailer/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -4207,7 +4206,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-04-04T09:51:09+00:00"
|
"time": "2025-06-27T19:55:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/mime",
|
"name": "symfony/mime",
|
||||||
@ -5244,16 +5243,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/translation",
|
"name": "symfony/translation",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/translation.git",
|
"url": "https://github.com/symfony/translation.git",
|
||||||
"reference": "4aba29076a29a3aa667e09b791e5f868973a8667"
|
"reference": "241d5ac4910d256660238a7ecf250deba4c73063"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/translation/zipball/4aba29076a29a3aa667e09b791e5f868973a8667",
|
"url": "https://api.github.com/repos/symfony/translation/zipball/241d5ac4910d256660238a7ecf250deba4c73063",
|
||||||
"reference": "4aba29076a29a3aa667e09b791e5f868973a8667",
|
"reference": "241d5ac4910d256660238a7ecf250deba4c73063",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -5320,7 +5319,7 @@
|
|||||||
"description": "Provides tools to internationalize your application",
|
"description": "Provides tools to internationalize your application",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/translation/tree/v7.3.0"
|
"source": "https://github.com/symfony/translation/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -5336,7 +5335,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-29T07:19:49+00:00"
|
"time": "2025-06-27T19:55:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/translation-contracts",
|
"name": "symfony/translation-contracts",
|
||||||
@ -5418,16 +5417,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/uid",
|
"name": "symfony/uid",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/uid.git",
|
"url": "https://github.com/symfony/uid.git",
|
||||||
"reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3"
|
"reference": "a69f69f3159b852651a6bf45a9fdd149520525bb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3",
|
"url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb",
|
||||||
"reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3",
|
"reference": "a69f69f3159b852651a6bf45a9fdd149520525bb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -5472,7 +5471,7 @@
|
|||||||
"uuid"
|
"uuid"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/uid/tree/v7.3.0"
|
"source": "https://github.com/symfony/uid/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -5488,20 +5487,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-05-24T14:28:13+00:00"
|
"time": "2025-06-27T19:55:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/var-dumper",
|
"name": "symfony/var-dumper",
|
||||||
"version": "v7.3.0",
|
"version": "v7.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/var-dumper.git",
|
"url": "https://github.com/symfony/var-dumper.git",
|
||||||
"reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e"
|
"reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e",
|
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
|
||||||
"reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e",
|
"reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -5556,7 +5555,7 @@
|
|||||||
"dump"
|
"dump"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/var-dumper/tree/v7.3.0"
|
"source": "https://github.com/symfony/var-dumper/tree/v7.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -5572,7 +5571,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-04-27T18:39:23+00:00"
|
"time": "2025-06-27T19:55:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tijsverkoyen/css-to-inline-styles",
|
"name": "tijsverkoyen/css-to-inline-styles",
|
||||||
@ -6280,16 +6279,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.13.1",
|
"version": "1.13.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c"
|
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36",
|
||||||
"reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c",
|
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -6328,7 +6327,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.1"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -6336,7 +6335,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-04-29T12:36:36+00:00"
|
"time": "2025-07-05T12:25:42+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
@ -6398,16 +6397,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nunomaduro/collision",
|
"name": "nunomaduro/collision",
|
||||||
"version": "v8.8.1",
|
"version": "v8.8.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nunomaduro/collision.git",
|
"url": "https://github.com/nunomaduro/collision.git",
|
||||||
"reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5"
|
"reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/44ccb82e3e21efb5446748d2a3c81a030ac22bd5",
|
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb",
|
||||||
"reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5",
|
"reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -6493,7 +6492,7 @@
|
|||||||
"type": "patreon"
|
"type": "patreon"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-06-11T01:04:21+00:00"
|
"time": "2025-06-25T02:12:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phar-io/manifest",
|
"name": "phar-io/manifest",
|
||||||
@ -7020,16 +7019,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "11.5.24",
|
"version": "11.5.27",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "6b07ab1047155cf38f82dd691787a277782271dd"
|
"reference": "446d43867314781df7e9adf79c3ec7464956fd8f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6b07ab1047155cf38f82dd691787a277782271dd",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/446d43867314781df7e9adf79c3ec7464956fd8f",
|
||||||
"reference": "6b07ab1047155cf38f82dd691787a277782271dd",
|
"reference": "446d43867314781df7e9adf79c3ec7464956fd8f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -7039,7 +7038,7 @@
|
|||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"myclabs/deep-copy": "^1.13.1",
|
"myclabs/deep-copy": "^1.13.3",
|
||||||
"phar-io/manifest": "^2.0.4",
|
"phar-io/manifest": "^2.0.4",
|
||||||
"phar-io/version": "^3.2.1",
|
"phar-io/version": "^3.2.1",
|
||||||
"php": ">=8.2",
|
"php": ">=8.2",
|
||||||
@ -7101,7 +7100,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.24"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.27"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -7125,7 +7124,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-06-20T11:31:02+00:00"
|
"time": "2025-07-11T04:10:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
|
420
package-lock.json
generated
420
package-lock.json
generated
@ -53,30 +53,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/compat-data": {
|
"node_modules/@babel/compat-data": {
|
||||||
"version": "7.27.5",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
|
||||||
"integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
|
"integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core": {
|
"node_modules/@babel/core": {
|
||||||
"version": "7.27.4",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz",
|
||||||
"integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
|
"integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ampproject/remapping": "^2.2.0",
|
"@ampproject/remapping": "^2.2.0",
|
||||||
"@babel/code-frame": "^7.27.1",
|
"@babel/code-frame": "^7.27.1",
|
||||||
"@babel/generator": "^7.27.3",
|
"@babel/generator": "^7.28.0",
|
||||||
"@babel/helper-compilation-targets": "^7.27.2",
|
"@babel/helper-compilation-targets": "^7.27.2",
|
||||||
"@babel/helper-module-transforms": "^7.27.3",
|
"@babel/helper-module-transforms": "^7.27.3",
|
||||||
"@babel/helpers": "^7.27.4",
|
"@babel/helpers": "^7.27.6",
|
||||||
"@babel/parser": "^7.27.4",
|
"@babel/parser": "^7.28.0",
|
||||||
"@babel/template": "^7.27.2",
|
"@babel/template": "^7.27.2",
|
||||||
"@babel/traverse": "^7.27.4",
|
"@babel/traverse": "^7.28.0",
|
||||||
"@babel/types": "^7.27.3",
|
"@babel/types": "^7.28.0",
|
||||||
"convert-source-map": "^2.0.0",
|
"convert-source-map": "^2.0.0",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
"gensync": "^1.0.0-beta.2",
|
"gensync": "^1.0.0-beta.2",
|
||||||
@ -101,15 +101,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/generator": {
|
"node_modules/@babel/generator": {
|
||||||
"version": "7.27.5",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz",
|
||||||
"integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
|
"integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.27.5",
|
"@babel/parser": "^7.28.0",
|
||||||
"@babel/types": "^7.27.3",
|
"@babel/types": "^7.28.0",
|
||||||
"@jridgewell/gen-mapping": "^0.3.5",
|
"@jridgewell/gen-mapping": "^0.3.12",
|
||||||
"@jridgewell/trace-mapping": "^0.3.25",
|
"@jridgewell/trace-mapping": "^0.3.28",
|
||||||
"jsesc": "^3.0.2"
|
"jsesc": "^3.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -210,21 +210,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-define-polyfill-provider": {
|
"node_modules/@babel/helper-define-polyfill-provider": {
|
||||||
"version": "0.6.4",
|
"version": "0.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
|
||||||
"integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==",
|
"integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-compilation-targets": "^7.22.6",
|
"@babel/helper-compilation-targets": "^7.27.2",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"debug": "^4.1.1",
|
"debug": "^4.4.1",
|
||||||
"lodash.debounce": "^4.0.8",
|
"lodash.debounce": "^4.0.8",
|
||||||
"resolve": "^1.14.2"
|
"resolve": "^1.22.10"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@babel/helper-globals": {
|
||||||
|
"version": "7.28.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
|
||||||
|
"integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@babel/helper-member-expression-to-functions": {
|
"node_modules/@babel/helper-member-expression-to-functions": {
|
||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
|
||||||
@ -391,12 +400,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.27.5",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
|
||||||
"integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
|
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.27.3"
|
"@babel/types": "^7.28.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
@ -602,14 +611,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-async-generator-functions": {
|
"node_modules/@babel/plugin-transform-async-generator-functions": {
|
||||||
"version": "7.27.1",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
|
||||||
"integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==",
|
"integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"@babel/helper-remap-async-to-generator": "^7.27.1",
|
"@babel/helper-remap-async-to-generator": "^7.27.1",
|
||||||
"@babel/traverse": "^7.27.1"
|
"@babel/traverse": "^7.28.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@ -651,9 +660,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-block-scoping": {
|
"node_modules/@babel/plugin-transform-block-scoping": {
|
||||||
"version": "7.27.5",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz",
|
||||||
"integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==",
|
"integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1"
|
"@babel/helper-plugin-utils": "^7.27.1"
|
||||||
@ -698,17 +707,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-classes": {
|
"node_modules/@babel/plugin-transform-classes": {
|
||||||
"version": "7.27.1",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz",
|
||||||
"integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==",
|
"integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.1",
|
"@babel/helper-annotate-as-pure": "^7.27.3",
|
||||||
"@babel/helper-compilation-targets": "^7.27.1",
|
"@babel/helper-compilation-targets": "^7.27.2",
|
||||||
|
"@babel/helper-globals": "^7.28.0",
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"@babel/helper-replace-supers": "^7.27.1",
|
"@babel/helper-replace-supers": "^7.27.1",
|
||||||
"@babel/traverse": "^7.27.1",
|
"@babel/traverse": "^7.28.0"
|
||||||
"globals": "^11.1.0"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@ -734,12 +743,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-destructuring": {
|
"node_modules/@babel/plugin-transform-destructuring": {
|
||||||
"version": "7.27.3",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
|
||||||
"integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==",
|
"integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1"
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
|
"@babel/traverse": "^7.28.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@ -810,6 +820,22 @@
|
|||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@babel/plugin-transform-explicit-resource-management": {
|
||||||
|
"version": "7.28.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
|
||||||
|
"integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
|
"@babel/plugin-transform-destructuring": "^7.28.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@babel/core": "^7.0.0-0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@babel/plugin-transform-exponentiation-operator": {
|
"node_modules/@babel/plugin-transform-exponentiation-operator": {
|
||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
|
||||||
@ -1061,15 +1087,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-object-rest-spread": {
|
"node_modules/@babel/plugin-transform-object-rest-spread": {
|
||||||
"version": "7.27.3",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz",
|
||||||
"integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==",
|
"integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-compilation-targets": "^7.27.2",
|
"@babel/helper-compilation-targets": "^7.27.2",
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"@babel/plugin-transform-destructuring": "^7.27.3",
|
"@babel/plugin-transform-destructuring": "^7.28.0",
|
||||||
"@babel/plugin-transform-parameters": "^7.27.1"
|
"@babel/plugin-transform-parameters": "^7.27.7",
|
||||||
|
"@babel/traverse": "^7.28.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@ -1126,9 +1153,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-parameters": {
|
"node_modules/@babel/plugin-transform-parameters": {
|
||||||
"version": "7.27.1",
|
"version": "7.27.7",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
|
||||||
"integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==",
|
"integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1"
|
"@babel/helper-plugin-utils": "^7.27.1"
|
||||||
@ -1189,9 +1216,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-regenerator": {
|
"node_modules/@babel/plugin-transform-regenerator": {
|
||||||
"version": "7.27.5",
|
"version": "7.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz",
|
||||||
"integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==",
|
"integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1"
|
"@babel/helper-plugin-utils": "^7.27.1"
|
||||||
@ -1235,16 +1262,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-runtime": {
|
"node_modules/@babel/plugin-transform-runtime": {
|
||||||
"version": "7.27.4",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.0.tgz",
|
||||||
"integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==",
|
"integrity": "sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-imports": "^7.27.1",
|
"@babel/helper-module-imports": "^7.27.1",
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"babel-plugin-polyfill-corejs2": "^0.4.10",
|
"babel-plugin-polyfill-corejs2": "^0.4.14",
|
||||||
"babel-plugin-polyfill-corejs3": "^0.11.0",
|
"babel-plugin-polyfill-corejs3": "^0.13.0",
|
||||||
"babel-plugin-polyfill-regenerator": "^0.6.1",
|
"babel-plugin-polyfill-regenerator": "^0.6.5",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1403,12 +1430,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/preset-env": {
|
"node_modules/@babel/preset-env": {
|
||||||
"version": "7.27.2",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz",
|
||||||
"integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==",
|
"integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.27.2",
|
"@babel/compat-data": "^7.28.0",
|
||||||
"@babel/helper-compilation-targets": "^7.27.2",
|
"@babel/helper-compilation-targets": "^7.27.2",
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
"@babel/helper-validator-option": "^7.27.1",
|
"@babel/helper-validator-option": "^7.27.1",
|
||||||
@ -1422,19 +1449,20 @@
|
|||||||
"@babel/plugin-syntax-import-attributes": "^7.27.1",
|
"@babel/plugin-syntax-import-attributes": "^7.27.1",
|
||||||
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
|
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
|
||||||
"@babel/plugin-transform-arrow-functions": "^7.27.1",
|
"@babel/plugin-transform-arrow-functions": "^7.27.1",
|
||||||
"@babel/plugin-transform-async-generator-functions": "^7.27.1",
|
"@babel/plugin-transform-async-generator-functions": "^7.28.0",
|
||||||
"@babel/plugin-transform-async-to-generator": "^7.27.1",
|
"@babel/plugin-transform-async-to-generator": "^7.27.1",
|
||||||
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
|
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
|
||||||
"@babel/plugin-transform-block-scoping": "^7.27.1",
|
"@babel/plugin-transform-block-scoping": "^7.28.0",
|
||||||
"@babel/plugin-transform-class-properties": "^7.27.1",
|
"@babel/plugin-transform-class-properties": "^7.27.1",
|
||||||
"@babel/plugin-transform-class-static-block": "^7.27.1",
|
"@babel/plugin-transform-class-static-block": "^7.27.1",
|
||||||
"@babel/plugin-transform-classes": "^7.27.1",
|
"@babel/plugin-transform-classes": "^7.28.0",
|
||||||
"@babel/plugin-transform-computed-properties": "^7.27.1",
|
"@babel/plugin-transform-computed-properties": "^7.27.1",
|
||||||
"@babel/plugin-transform-destructuring": "^7.27.1",
|
"@babel/plugin-transform-destructuring": "^7.28.0",
|
||||||
"@babel/plugin-transform-dotall-regex": "^7.27.1",
|
"@babel/plugin-transform-dotall-regex": "^7.27.1",
|
||||||
"@babel/plugin-transform-duplicate-keys": "^7.27.1",
|
"@babel/plugin-transform-duplicate-keys": "^7.27.1",
|
||||||
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
|
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
|
||||||
"@babel/plugin-transform-dynamic-import": "^7.27.1",
|
"@babel/plugin-transform-dynamic-import": "^7.27.1",
|
||||||
|
"@babel/plugin-transform-explicit-resource-management": "^7.28.0",
|
||||||
"@babel/plugin-transform-exponentiation-operator": "^7.27.1",
|
"@babel/plugin-transform-exponentiation-operator": "^7.27.1",
|
||||||
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
||||||
"@babel/plugin-transform-for-of": "^7.27.1",
|
"@babel/plugin-transform-for-of": "^7.27.1",
|
||||||
@ -1451,15 +1479,15 @@
|
|||||||
"@babel/plugin-transform-new-target": "^7.27.1",
|
"@babel/plugin-transform-new-target": "^7.27.1",
|
||||||
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
|
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
|
||||||
"@babel/plugin-transform-numeric-separator": "^7.27.1",
|
"@babel/plugin-transform-numeric-separator": "^7.27.1",
|
||||||
"@babel/plugin-transform-object-rest-spread": "^7.27.2",
|
"@babel/plugin-transform-object-rest-spread": "^7.28.0",
|
||||||
"@babel/plugin-transform-object-super": "^7.27.1",
|
"@babel/plugin-transform-object-super": "^7.27.1",
|
||||||
"@babel/plugin-transform-optional-catch-binding": "^7.27.1",
|
"@babel/plugin-transform-optional-catch-binding": "^7.27.1",
|
||||||
"@babel/plugin-transform-optional-chaining": "^7.27.1",
|
"@babel/plugin-transform-optional-chaining": "^7.27.1",
|
||||||
"@babel/plugin-transform-parameters": "^7.27.1",
|
"@babel/plugin-transform-parameters": "^7.27.7",
|
||||||
"@babel/plugin-transform-private-methods": "^7.27.1",
|
"@babel/plugin-transform-private-methods": "^7.27.1",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
||||||
"@babel/plugin-transform-property-literals": "^7.27.1",
|
"@babel/plugin-transform-property-literals": "^7.27.1",
|
||||||
"@babel/plugin-transform-regenerator": "^7.27.1",
|
"@babel/plugin-transform-regenerator": "^7.28.0",
|
||||||
"@babel/plugin-transform-regexp-modifiers": "^7.27.1",
|
"@babel/plugin-transform-regexp-modifiers": "^7.27.1",
|
||||||
"@babel/plugin-transform-reserved-words": "^7.27.1",
|
"@babel/plugin-transform-reserved-words": "^7.27.1",
|
||||||
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
|
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
|
||||||
@ -1472,10 +1500,10 @@
|
|||||||
"@babel/plugin-transform-unicode-regex": "^7.27.1",
|
"@babel/plugin-transform-unicode-regex": "^7.27.1",
|
||||||
"@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
|
"@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
|
||||||
"@babel/preset-modules": "0.1.6-no-external-plugins",
|
"@babel/preset-modules": "0.1.6-no-external-plugins",
|
||||||
"babel-plugin-polyfill-corejs2": "^0.4.10",
|
"babel-plugin-polyfill-corejs2": "^0.4.14",
|
||||||
"babel-plugin-polyfill-corejs3": "^0.11.0",
|
"babel-plugin-polyfill-corejs3": "^0.13.0",
|
||||||
"babel-plugin-polyfill-regenerator": "^0.6.1",
|
"babel-plugin-polyfill-regenerator": "^0.6.5",
|
||||||
"core-js-compat": "^3.40.0",
|
"core-js-compat": "^3.43.0",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1532,27 +1560,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/traverse": {
|
"node_modules/@babel/traverse": {
|
||||||
"version": "7.27.4",
|
"version": "7.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz",
|
||||||
"integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
|
"integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.27.1",
|
"@babel/code-frame": "^7.27.1",
|
||||||
"@babel/generator": "^7.27.3",
|
"@babel/generator": "^7.28.0",
|
||||||
"@babel/parser": "^7.27.4",
|
"@babel/helper-globals": "^7.28.0",
|
||||||
|
"@babel/parser": "^7.28.0",
|
||||||
"@babel/template": "^7.27.2",
|
"@babel/template": "^7.27.2",
|
||||||
"@babel/types": "^7.27.3",
|
"@babel/types": "^7.28.0",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1"
|
||||||
"globals": "^11.1.0"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/types": {
|
"node_modules/@babel/types": {
|
||||||
"version": "7.27.6",
|
"version": "7.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz",
|
||||||
"integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
|
"integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
"@babel/helper-string-parser": "^7.27.1",
|
||||||
@ -1591,17 +1619,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/gen-mapping": {
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
"version": "0.3.8",
|
"version": "0.3.12",
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
|
||||||
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
|
"integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/set-array": "^1.2.1",
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
|
||||||
"@jridgewell/trace-mapping": "^0.3.24"
|
"@jridgewell/trace-mapping": "^0.3.24"
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/resolve-uri": {
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
@ -1613,19 +1637,10 @@
|
|||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/set-array": {
|
|
||||||
"version": "1.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/source-map": {
|
"node_modules/@jridgewell/source-map": {
|
||||||
"version": "0.3.6",
|
"version": "0.3.10",
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
|
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz",
|
||||||
"integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
|
"integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/gen-mapping": "^0.3.5",
|
"@jridgewell/gen-mapping": "^0.3.5",
|
||||||
@ -1633,15 +1648,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/sourcemap-codec": {
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.4",
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
|
||||||
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
"integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/trace-mapping": {
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
"version": "0.3.25",
|
"version": "0.3.29",
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz",
|
||||||
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
"integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/resolve-uri": "^3.1.0",
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
@ -2132,9 +2147,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/express-serve-static-core": {
|
"node_modules/@types/express-serve-static-core": {
|
||||||
"version": "5.0.6",
|
"version": "5.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz",
|
||||||
"integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==",
|
"integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
@ -2245,18 +2260,18 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "24.0.3",
|
"version": "24.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz",
|
||||||
"integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==",
|
"integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~7.8.0"
|
"undici-types": "~7.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node-forge": {
|
"node_modules/@types/node-forge": {
|
||||||
"version": "1.3.11",
|
"version": "1.3.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.13.tgz",
|
||||||
"integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
|
"integrity": "sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
@ -2568,6 +2583,18 @@
|
|||||||
"node": ">=0.4.0"
|
"node": ">=0.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/acorn-import-phases": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"acorn": "^8.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/adjust-sourcemap-loader": {
|
"node_modules/adjust-sourcemap-loader": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
|
||||||
@ -2846,13 +2873,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-corejs2": {
|
"node_modules/babel-plugin-polyfill-corejs2": {
|
||||||
"version": "0.4.13",
|
"version": "0.4.14",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
|
||||||
"integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==",
|
"integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.22.6",
|
"@babel/compat-data": "^7.27.7",
|
||||||
"@babel/helper-define-polyfill-provider": "^0.6.4",
|
"@babel/helper-define-polyfill-provider": "^0.6.5",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
@ -2869,25 +2896,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-corejs3": {
|
"node_modules/babel-plugin-polyfill-corejs3": {
|
||||||
"version": "0.11.1",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
|
||||||
"integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==",
|
"integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-define-polyfill-provider": "^0.6.3",
|
"@babel/helper-define-polyfill-provider": "^0.6.5",
|
||||||
"core-js-compat": "^3.40.0"
|
"core-js-compat": "^3.43.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-regenerator": {
|
"node_modules/babel-plugin-polyfill-regenerator": {
|
||||||
"version": "0.6.4",
|
"version": "0.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
|
||||||
"integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==",
|
"integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-define-polyfill-provider": "^0.6.4"
|
"@babel/helper-define-polyfill-provider": "^0.6.5"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
||||||
@ -3179,9 +3206,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.25.0",
|
"version": "4.25.1",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
|
||||||
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
|
"integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@ -3198,8 +3225,8 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001718",
|
"caniuse-lite": "^1.0.30001726",
|
||||||
"electron-to-chromium": "^1.5.160",
|
"electron-to-chromium": "^1.5.173",
|
||||||
"node-releases": "^2.0.19",
|
"node-releases": "^2.0.19",
|
||||||
"update-browserslist-db": "^1.1.3"
|
"update-browserslist-db": "^1.1.3"
|
||||||
},
|
},
|
||||||
@ -3327,9 +3354,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001724",
|
"version": "1.0.30001727",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz",
|
||||||
"integrity": "sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==",
|
"integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@ -3548,16 +3575,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/compression": {
|
"node_modules/compression": {
|
||||||
"version": "1.8.0",
|
"version": "1.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
|
||||||
"integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==",
|
"integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bytes": "3.1.2",
|
"bytes": "3.1.2",
|
||||||
"compressible": "~2.0.18",
|
"compressible": "~2.0.18",
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"negotiator": "~0.6.4",
|
"negotiator": "~0.6.4",
|
||||||
"on-headers": "~1.0.2",
|
"on-headers": "~1.1.0",
|
||||||
"safe-buffer": "5.2.1",
|
"safe-buffer": "5.2.1",
|
||||||
"vary": "~1.1.2"
|
"vary": "~1.1.2"
|
||||||
},
|
},
|
||||||
@ -3689,12 +3716,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/core-js-compat": {
|
"node_modules/core-js-compat": {
|
||||||
"version": "3.43.0",
|
"version": "3.44.0",
|
||||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz",
|
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz",
|
||||||
"integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==",
|
"integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.25.0"
|
"browserslist": "^4.25.1"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@ -3918,9 +3945,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/css-what": {
|
"node_modules/css-what": {
|
||||||
"version": "6.1.0",
|
"version": "6.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
|
||||||
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
|
"integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
@ -4340,9 +4367,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.171",
|
"version": "1.5.187",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz",
|
||||||
"integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==",
|
"integrity": "sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/elliptic": {
|
"node_modules/elliptic": {
|
||||||
@ -4391,9 +4418,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/enhanced-resolve": {
|
"node_modules/enhanced-resolve": {
|
||||||
"version": "5.18.1",
|
"version": "5.18.2",
|
||||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz",
|
||||||
"integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
|
"integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.4",
|
||||||
@ -4939,9 +4966,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
||||||
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
@ -5140,15 +5167,6 @@
|
|||||||
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
|
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
|
||||||
"license": "BSD-2-Clause"
|
"license": "BSD-2-Clause"
|
||||||
},
|
},
|
||||||
"node_modules/globals": {
|
|
||||||
"version": "11.12.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
|
||||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/globby": {
|
"node_modules/globby": {
|
||||||
"version": "10.0.2",
|
"version": "10.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
|
||||||
@ -6153,9 +6171,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/less": {
|
"node_modules/less": {
|
||||||
"version": "4.3.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/less/-/less-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/less/-/less-4.4.0.tgz",
|
||||||
"integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==",
|
"integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -6845,9 +6863,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/on-headers": {
|
"node_modules/on-headers": {
|
||||||
"version": "1.0.2",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
|
||||||
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
|
"integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@ -8657,16 +8675,23 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/sha.js": {
|
"node_modules/sha.js": {
|
||||||
"version": "2.4.11",
|
"version": "2.4.12",
|
||||||
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
|
||||||
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
"integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
|
||||||
"license": "(MIT AND BSD-3-Clause)",
|
"license": "(MIT AND BSD-3-Clause)",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"inherits": "^2.0.1",
|
"inherits": "^2.0.4",
|
||||||
"safe-buffer": "^5.0.1"
|
"safe-buffer": "^5.2.1",
|
||||||
|
"to-buffer": "^1.2.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"sha.js": "bin.js"
|
"sha.js": "bin.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shallow-clone": {
|
"node_modules/shallow-clone": {
|
||||||
@ -9546,21 +9571,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.99.9",
|
"version": "5.100.2",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz",
|
||||||
"integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
|
"integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.7",
|
"@types/eslint-scope": "^3.7.7",
|
||||||
"@types/estree": "^1.0.6",
|
"@types/estree": "^1.0.8",
|
||||||
"@types/json-schema": "^7.0.15",
|
"@types/json-schema": "^7.0.15",
|
||||||
"@webassemblyjs/ast": "^1.14.1",
|
"@webassemblyjs/ast": "^1.14.1",
|
||||||
"@webassemblyjs/wasm-edit": "^1.14.1",
|
"@webassemblyjs/wasm-edit": "^1.14.1",
|
||||||
"@webassemblyjs/wasm-parser": "^1.14.1",
|
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||||
"acorn": "^8.14.0",
|
"acorn": "^8.15.0",
|
||||||
|
"acorn-import-phases": "^1.0.3",
|
||||||
"browserslist": "^4.24.0",
|
"browserslist": "^4.24.0",
|
||||||
"chrome-trace-event": "^1.0.2",
|
"chrome-trace-event": "^1.0.2",
|
||||||
"enhanced-resolve": "^5.17.1",
|
"enhanced-resolve": "^5.17.2",
|
||||||
"es-module-lexer": "^1.2.1",
|
"es-module-lexer": "^1.2.1",
|
||||||
"eslint-scope": "5.1.1",
|
"eslint-scope": "5.1.1",
|
||||||
"events": "^3.2.0",
|
"events": "^3.2.0",
|
||||||
@ -9574,7 +9600,7 @@
|
|||||||
"tapable": "^2.1.1",
|
"tapable": "^2.1.1",
|
||||||
"terser-webpack-plugin": "^5.3.11",
|
"terser-webpack-plugin": "^5.3.11",
|
||||||
"watchpack": "^2.4.1",
|
"watchpack": "^2.4.1",
|
||||||
"webpack-sources": "^3.2.3"
|
"webpack-sources": "^3.3.3"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"webpack": "bin/webpack.js"
|
"webpack": "bin/webpack.js"
|
||||||
@ -10038,9 +10064,9 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/ws": {
|
"node_modules/ws": {
|
||||||
"version": "8.18.2",
|
"version": "8.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
|
||||||
"integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
|
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
|
@ -1 +1 @@
|
|||||||
v2.2.1-rel
|
v2.2.2-rel
|
||||||
|
@ -1,9 +1,18 @@
|
|||||||
/** ensure our userpassword has select is next to the password input */
|
/* ensure our password type select box shrinks and has the full boarder */
|
||||||
attribute#userpassword .select2-container--bootstrap-5 .select2-selection {
|
attribute#userpassword .input-group > .form-select {
|
||||||
font-size: inherit;
|
flex-grow: 0;
|
||||||
width: 9em;
|
width: 9em;
|
||||||
border: var(--bs-gray-500) 1px solid;
|
border: var(--bs-gray-500) 1px solid;
|
||||||
background-color: #f0f0f0;
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
attribute#userpassword .input-group .select2-container--bootstrap-5 {
|
||||||
|
flex-grow: 0;
|
||||||
|
margin-bottom: 0.25em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
attribute#userpassword .input-group > .select2-container--bootstrap-5 .select2-selection {
|
||||||
|
background-color: #eef2f4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* render the structural inside the input box */
|
/* render the structural inside the input box */
|
||||||
@ -14,20 +23,6 @@ attribute#objectclass .input-group-end:not(input.form-control) {
|
|||||||
z-index: 5;
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* select forms that have nothing next to them */
|
|
||||||
.select-group:first-child .select2-container--bootstrap-5 .select2-selection {
|
|
||||||
border-radius: 4px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group:first-child:not(.select-group) .select2-container--bootstrap-5 .select2-selection {
|
|
||||||
border-bottom-right-radius: unset;
|
|
||||||
border-top-right-radius: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
|
||||||
font-size: 0.88em;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.form-control.input-group-end {
|
input.form-control.input-group-end {
|
||||||
border-bottom-right-radius: 4px !important;
|
border-bottom-right-radius: 4px !important;
|
||||||
border-top-right-radius: 4px !important;
|
border-top-right-radius: 4px !important;
|
||||||
@ -98,3 +93,8 @@ input.form-control.input-group-end {
|
|||||||
ul.square {
|
ul.square {
|
||||||
list-style-type: square;
|
list-style-type: square;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fix select2 selections when set up with d-none */
|
||||||
|
select[class*="d-none"] + span.select2 {
|
||||||
|
display: none;
|
||||||
|
}
|
@ -215,9 +215,17 @@ pre code .line::before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** select2 rendering fixes */
|
/** select2 rendering fixes */
|
||||||
|
.select2-container--bootstrap-5 .select2-selection {
|
||||||
|
border: var(--bs-gray-500) 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selection rendered size */
|
||||||
|
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||||
|
font-size: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
/* The opened input box */
|
/* The opened input box */
|
||||||
.select2-container--bootstrap-5 .select2-dropdown .select2-search .select2-search__field {
|
.select2-container--bootstrap-5 .select2-dropdown .select2-search .select2-search__field {
|
||||||
line-height: 1.0;
|
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,23 +234,21 @@ pre code .line::before {
|
|||||||
font-size: 95%;
|
font-size: 95%;
|
||||||
}
|
}
|
||||||
|
|
||||||
select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__clear, .select2-container--bootstrap-5 .select2-selection--single .select2-selection__clear {
|
/* Place holder text */
|
||||||
width: 0.5rem;
|
|
||||||
height: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered .select2-selection__placeholder {
|
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered .select2-selection__placeholder {
|
||||||
line-height: 1.0;
|
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Group options title rendering */
|
||||||
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group {
|
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group {
|
||||||
color: #212529;
|
color: #212529;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Multiple selected items rendering */
|
||||||
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice {
|
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice {
|
||||||
padding: 0.25em 0.45em;
|
padding: 0.25em 0.45em;
|
||||||
|
font-size: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove the shadow outline on an opened box */
|
/* Remove the shadow outline on an opened box */
|
||||||
|
@ -89,7 +89,7 @@ $(document).ready(function() {
|
|||||||
types: 'active expanded focus selected' // which status types to store
|
types: 'active expanded focus selected' // which status types to store
|
||||||
},
|
},
|
||||||
click: function(event,data) {
|
click: function(event,data) {
|
||||||
if (data.targetType === 'title')
|
if (data.targetType === 'title' && data.node.data.item)
|
||||||
getNode(data.node.data.item);
|
getNode(data.node.data.item);
|
||||||
},
|
},
|
||||||
source: sources,
|
source: sources,
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
"Check Password": "ZCheck Password",
|
"Check Password": "ZCheck Password",
|
||||||
"Close": "ZClose",
|
"Close": "ZClose",
|
||||||
"Collective": "ZCollective",
|
"Collective": "ZCollective",
|
||||||
|
"Complete Path": "ZComplete Path",
|
||||||
|
"Copy": "ZCopy",
|
||||||
"Copy\/Move": "ZCopy\/Move",
|
"Copy\/Move": "ZCopy\/Move",
|
||||||
"Create Child Entry": "ZCreate Child Entry",
|
"Create Child Entry": "ZCreate Child Entry",
|
||||||
"Created": "ZCreated",
|
"Created": "ZCreated",
|
||||||
@ -24,16 +26,22 @@
|
|||||||
"Create New Entry": "ZCreate New Entry",
|
"Create New Entry": "ZCreate New Entry",
|
||||||
"Create new LDAP item here": "ZCreate new LDAP item here",
|
"Create new LDAP item here": "ZCreate new LDAP item here",
|
||||||
"Delete": "ZDelete",
|
"Delete": "ZDelete",
|
||||||
|
"Delete after Copy": "ZDelete after Copy",
|
||||||
"Deleted": "ZDeleted",
|
"Deleted": "ZDeleted",
|
||||||
"Delete Entry": "ZDelete Entry",
|
"Delete Entry": "ZDelete Entry",
|
||||||
"Deleting this DN will permanently delete it from your LDAP server.": "ZDeleting this DN will permanently delete it from your LDAP server.",
|
"Deleting this DN will permanently delete it from your LDAP server.": "ZDeleting this DN will permanently delete it from your LDAP server.",
|
||||||
"Description": "ZDescription",
|
"Description": "ZDescription",
|
||||||
"DN": "ZDN",
|
"DN": "ZDN",
|
||||||
|
"DN doesnt exist": "ZDN doesnt exist",
|
||||||
"Download": "ZDownload",
|
"Download": "ZDownload",
|
||||||
"Do you want to make the following changes?": "ZDo you want to make the following changes?",
|
"Do you want to make the following changes?": "ZDo you want to make the following changes?",
|
||||||
"dynamic": "Zdynamic",
|
"dynamic": "Zdynamic",
|
||||||
"Edit Entry": "ZEdit Entry",
|
"Edit Entry": "ZEdit Entry",
|
||||||
"Entry": "ZEntry",
|
"Entry": "ZEntry",
|
||||||
|
"Entry copied": "ZEntry copied",
|
||||||
|
"Entry copied and deleted": "ZEntry copied and deleted",
|
||||||
|
"Entry doesnt exist": "ZEntry doesnt exist",
|
||||||
|
"Entry renamed": "ZEntry renamed",
|
||||||
"Entry updated": "ZEntry updated",
|
"Entry updated": "ZEntry updated",
|
||||||
"Equality": "ZEquality",
|
"Equality": "ZEquality",
|
||||||
"Error": "ZError",
|
"Error": "ZError",
|
||||||
@ -43,10 +51,10 @@
|
|||||||
"Exported by": "ZExported by",
|
"Exported by": "ZExported by",
|
||||||
"Force as MAY by config": "ZForce as MAY by config",
|
"Force as MAY by config": "ZForce as MAY by config",
|
||||||
"Generated by": "ZGenerated by",
|
"Generated by": "ZGenerated by",
|
||||||
"Home": "ZHome",
|
|
||||||
"Ignoring blank value": "ZIgnoring blank value",
|
"Ignoring blank value": "ZIgnoring blank value",
|
||||||
"Import Result": "ZImport Result",
|
"Import Result": "ZImport Result",
|
||||||
"Inherits from": "ZInherits from",
|
"Inherits from": "ZInherits from",
|
||||||
|
"Input disabled": "ZInput disabled",
|
||||||
"Internal": "ZInternal",
|
"Internal": "ZInternal",
|
||||||
"Invalid Password": "ZInvalid Password",
|
"Invalid Password": "ZInvalid Password",
|
||||||
"KRB_DISALLOW_ALL_TIX": "ZKRB_DISALLOW_ALL_TIX",
|
"KRB_DISALLOW_ALL_TIX": "ZKRB_DISALLOW_ALL_TIX",
|
||||||
@ -65,15 +73,21 @@
|
|||||||
"LDAP Entry": "ZLDAP Entry",
|
"LDAP Entry": "ZLDAP Entry",
|
||||||
"LDAP Server Error Code": "ZLDAP Server Error Code",
|
"LDAP Server Error Code": "ZLDAP Server Error Code",
|
||||||
"LDAP Server Unavailable": "ZLDAP Server Unavailable",
|
"LDAP Server Unavailable": "ZLDAP Server Unavailable",
|
||||||
|
"LDAP User Error": "ZLDAP User Error",
|
||||||
"LDIF": "ZLDIF",
|
"LDIF": "ZLDIF",
|
||||||
"LDIF Import": "ZLDIF Import",
|
"LDIF Import": "ZLDIF Import",
|
||||||
"LDIF Import Result": "ZLDIF Import Result",
|
"LDIF Import Result": "ZLDIF Import Result",
|
||||||
"Line": "ZLine",
|
"Line": "ZLine",
|
||||||
"locale": "ZZ",
|
"locale": "ZZ",
|
||||||
|
"Lock expired, please re-submit": "ZLock expired, please re-submit",
|
||||||
"Matching Rules": "ZMatching Rules",
|
"Matching Rules": "ZMatching Rules",
|
||||||
"Maximum file size": "ZMaximum file size",
|
"Maximum file size": "ZMaximum file size",
|
||||||
"Maximum Length": "ZMaximum Length",
|
"Maximum Length": "ZMaximum Length",
|
||||||
|
"Modified": "ZModified",
|
||||||
|
"Move": "ZMove",
|
||||||
|
"New": "ZNew",
|
||||||
"NEW": "ZNEW",
|
"NEW": "ZNEW",
|
||||||
|
"New RDN": "ZNew RDN",
|
||||||
"New Value": "ZNew Value",
|
"New Value": "ZNew Value",
|
||||||
"Next": "ZNext",
|
"Next": "ZNext",
|
||||||
"No attributes changed": "ZNo attributes changed",
|
"No attributes changed": "ZNo attributes changed",
|
||||||
@ -85,6 +99,7 @@
|
|||||||
"Object Identifier": "ZObject Identifier",
|
"Object Identifier": "ZObject Identifier",
|
||||||
"Obsolete": "ZObsolete",
|
"Obsolete": "ZObsolete",
|
||||||
"Optional Attributes": "ZOptional Attributes",
|
"Optional Attributes": "ZOptional Attributes",
|
||||||
|
"OR": "ZOR",
|
||||||
"Ordering": "ZOrdering",
|
"Ordering": "ZOrdering",
|
||||||
"Or upload LDIF file": "ZOr upload LDIF file",
|
"Or upload LDIF file": "ZOr upload LDIF file",
|
||||||
"Parent to": "ZParent to",
|
"Parent to": "ZParent to",
|
||||||
@ -106,19 +121,26 @@
|
|||||||
"Schema Information": "ZSchema Information",
|
"Schema Information": "ZSchema Information",
|
||||||
"Search Filter": "ZSearch Filter",
|
"Search Filter": "ZSearch Filter",
|
||||||
"Search Scope": "ZSearch Scope",
|
"Search Scope": "ZSearch Scope",
|
||||||
"Select a Structural ObjectClass...": "ZSelect a Structural ObjectClass...",
|
"Select an objectclass or a template": "ZSelect an objectclass or a template",
|
||||||
|
"Select a Structural ObjectClass": "ZSelect a Structural ObjectClass",
|
||||||
|
"Select a Template": "ZSelect a Template",
|
||||||
"Select attribute...": "ZSelect attribute...",
|
"Select attribute...": "ZSelect attribute...",
|
||||||
|
"Select Base": "ZSelect Base",
|
||||||
|
"Select Base of Entry": "ZSelect Base of Entry",
|
||||||
"Select from": "ZSelect from",
|
"Select from": "ZSelect from",
|
||||||
"Serial Number": "ZSerial Number",
|
"Serial Number": "ZSerial Number",
|
||||||
"Server": "ZServer",
|
"Server": "ZServer",
|
||||||
"Server Info": "ZServer Info",
|
"Server Info": "ZServer Info",
|
||||||
"Single Valued": "ZSingle Valued",
|
"Single Valued": "ZSingle Valued",
|
||||||
|
"Size Limit": "ZSize Limit",
|
||||||
"Step": "ZStep",
|
"Step": "ZStep",
|
||||||
"structural": "Zstructural",
|
"structural": "Zstructural",
|
||||||
"Subject Key Identifier": "ZSubject Key Identifier",
|
"Subject Key Identifier": "ZSubject Key Identifier",
|
||||||
"Substring Rule": "ZSubstring Rule",
|
"Substring Rule": "ZSubstring Rule",
|
||||||
"Syntax": "ZSyntax",
|
"Syntax": "ZSyntax",
|
||||||
"Syntaxes": "ZSyntaxes",
|
"Syntaxes": "ZSyntaxes",
|
||||||
|
"There isnt a Structural Objectclass.": "ZThere isnt a Structural Objectclass",
|
||||||
|
"There may be more entries": "ZThere may be more entries",
|
||||||
"These are dynamic values present as a result of another attribute": "ZThese are dynamic values present as a result of another attribute",
|
"These are dynamic values present as a result of another attribute": "ZThese are dynamic values present as a result of another attribute",
|
||||||
"This attribute is required for the RDN": "ZThis attribute is required for the RDN",
|
"This attribute is required for the RDN": "ZThis attribute is required for the RDN",
|
||||||
"To Server": "ZTo Server",
|
"To Server": "ZTo Server",
|
||||||
@ -134,8 +156,12 @@
|
|||||||
"Used by ObjectClasses": "ZUsed by ObjectClasses",
|
"Used by ObjectClasses": "ZUsed by ObjectClasses",
|
||||||
"User Modification": "ZUser Modification",
|
"User Modification": "ZUser Modification",
|
||||||
"Validation Errors": "ZValidation Errors",
|
"Validation Errors": "ZValidation Errors",
|
||||||
|
"Value calculated from another attribute": "ZValue calculated from another attribute",
|
||||||
|
"Value controlled by template": "ZValue controlled by template",
|
||||||
|
"Value triggers an update to another attribute": "ZValue triggers an update to another attribute",
|
||||||
"Version": "ZVersion",
|
"Version": "ZVersion",
|
||||||
"WARNING": "ZWARNING",
|
"WARNING": "ZWARNING",
|
||||||
|
"You cannot select a template and an objectclass": "ZYou cannot select a template and an objectclass",
|
||||||
"Your DNS server cannot resolve that hostname": "ZYour DNS server cannot resolve that hostname",
|
"Your DNS server cannot resolve that hostname": "ZYour DNS server cannot resolve that hostname",
|
||||||
"Your LDAP server hostname is incorrect": "ZYour LDAP server hostname is incorrect",
|
"Your LDAP server hostname is incorrect": "ZYour LDAP server hostname is incorrect",
|
||||||
"Your LDAP server is not connectable": "ZYour LDAP server is not connectable",
|
"Your LDAP server is not connectable": "ZYour LDAP server is not connectable",
|
||||||
|
@ -1,49 +1,47 @@
|
|||||||
<!-- $o=Attribute::class -->
|
<!-- $o=Attribute::class -->
|
||||||
<x-attribute.layout :edit="$edit=($edit ?? FALSE)" :new="$new=($new ?? FALSE)" :o="$o" :template="$template">
|
<x-attribute.layout :edit="$edit=($edit ?? FALSE)" :new="$new=($new ?? FALSE)" :o="$o" :template="$template">
|
||||||
<div class="col-12">
|
<div class="tab-content">
|
||||||
<div class="tab-content">
|
@foreach($o->langtags as $langtag)
|
||||||
@foreach($o->langtags as $langtag)
|
<span @class(['tab-pane','active'=>$loop->index === 0]) id="langtag-{{ $o->name_lc }}-{{ $langtag }}" role="tabpanel">
|
||||||
<span @class(['tab-pane','active'=>$loop->index === 0]) id="langtag-{{ $o->name_lc }}-{{ $langtag }}" role="tabpanel">
|
@foreach(Arr::get(old($o->name_lc,[$langtag=>$new ? [NULL] : $o->tagValues($langtag)]),$langtag,[]) as $key => $value)
|
||||||
@foreach(Arr::get(old($o->name_lc,[$langtag=>$new ? [NULL] : $o->tagValues($langtag)]),$langtag,[]) as $key => $value)
|
<!-- AutoValue Lock -->
|
||||||
<!-- AutoValue Lock -->
|
@if($new && $template && ($av=$template->attributeValue($o->name_lc)))
|
||||||
@if($new && $template && ($av=$template->attributeValue($o->name_lc)))
|
<input type="hidden" name="_auto_value[{{ $o->name_lc }}]" value="{{ $av }}">
|
||||||
<input type="hidden" name="_auto_value[{{ $o->name_lc }}]" value="{{ $av }}">
|
@endif
|
||||||
@endif
|
|
||||||
|
|
||||||
<div class="input-group has-validation">
|
<div class="input-group has-validation">
|
||||||
<input type="text"
|
<input type="text"
|
||||||
@class([
|
@class([
|
||||||
'form-control',
|
'form-control',
|
||||||
'noedit'=>(! $edit) || ($o->is_rdn),
|
'noedit'=>(! $edit) || ($o->is_rdn),
|
||||||
'is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)) || ($e=$errors->get('_auto_value.'.$o->name_lc)),
|
'is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)) || ($e=$errors->get('_auto_value.'.$o->name_lc)),
|
||||||
'mb-1',
|
'mb-1',
|
||||||
'border-focus'=>! ($tv=$o->tagValuesOld($langtag))->contains($value),
|
'border-focus'=>! ($tv=$o->tagValuesOld($langtag))->contains($value),
|
||||||
'bg-success-subtle'=>$updated])
|
'bg-success-subtle'=>$updated])
|
||||||
name="{{ $o->name_lc }}[{{ $langtag }}][]"
|
name="{{ $o->name_lc }}[{{ $langtag }}][]"
|
||||||
value="{{ $value ?: ($av ?? '') }}"
|
value="{{ $value ?: ($av ?? '') }}"
|
||||||
placeholder="{{ ! is_null($x=$tv->get($loop->index)) ? $x : '['.__('NEW').']' }}"
|
placeholder="{{ ! is_null($x=$tv->get($loop->index)) ? $x : '['.__('NEW').']' }}"
|
||||||
@readonly(! $edit)
|
@readonly(! $new)
|
||||||
@disabled($o->isDynamic())>
|
@disabled($o->isDynamic())>
|
||||||
|
|
||||||
<div class="invalid-feedback pb-2">
|
<div class="invalid-feedback pb-2">
|
||||||
@if($e)
|
@if($e)
|
||||||
{{ join('|',$e) }}
|
{{ join('|',$e) }}
|
||||||
@endif
|
@endif
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
</div>
|
||||||
</span>
|
@endforeach
|
||||||
@endforeach
|
</span>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
@if($edit && (! $o->is_rdn))
|
@if($edit && (! $o->is_rdn))
|
||||||
<span @class(['tab-pane']) id="langtag-{{ $o->name_lc }}-+" role="tabpanel">
|
<span @class(['tab-pane']) id="langtag-{{ $o->name_lc }}-+" role="tabpanel">
|
||||||
<span class="d-flex font-size-sm alert alert-warning p-2">
|
<span class="d-flex font-size-sm alert alert-warning p-2">
|
||||||
It is not possible to create new language tags at the moment. This functionality should come soon.<br>
|
It is not possible to create new language tags at the moment. This functionality should come soon.<br>
|
||||||
You can create them with an LDIF import though.
|
You can create them with an LDIF import though.
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
@endif
|
</span>
|
||||||
</div>
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</x-attribute.layout>
|
</x-attribute.layout>
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
@foreach(($o->tagValues($langtag)->count() ? $o->tagValues($langtag) : [$langtag => NULL]) as $key => $value)
|
@foreach(($o->tagValues($langtag)->count() ? $o->tagValues($langtag) : [$langtag => NULL]) as $key => $value)
|
||||||
@if($edit)
|
@if($edit)
|
||||||
<div class="input-group has-validation">
|
<div class="input-group has-validation">
|
||||||
<x-form.select id="userpassword_hash_{{$loop->index}}{{$template?->name ?: ''}}" name="_userpassword_hash[{{ $langtag }}][]" :value="old('_userpassword_hash.'.$langtag.'.0',$o->hash($new ? '' : ($value ?? ''))->id())" :options="$helpers" allowclear="false" :disabled="! $new"/>
|
<x-select class="mb-1" id="userpassword_hash_{{$loop->index}}{{$template?->name ?: ''}}" name="_userpassword_hash[{{ $langtag }}][]" :value="old('_userpassword_hash.'.$langtag.'.0',$o->hash($new ? '' : ($value ?? ''))->id())" :options="$helpers" allowclear="false" :disabled="! $new"/>
|
||||||
<input type="password" @class(['form-control','is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)),'mb-1','border-focus'=>! $o->tagValuesOld($langtag)->contains($value),'bg-success-subtle'=>$updated]) name="{{ $o->name_lc }}[{{ $langtag }}][]" value="{{ Arr::get(old($o->name_lc),$langtag.'.'.$loop->index,$value ? md5($value) : '') }}" @readonly(! $new)>
|
<input type="password" @class(['form-control','is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)),'mb-1','border-focus'=>! $o->tagValuesOld($langtag)->contains($value),'bg-success-subtle'=>$updated]) name="{{ $o->name_lc }}[{{ $langtag }}][]" value="{{ Arr::get(old($o->name_lc),$langtag.'.'.$loop->index,$value ? md5($value) : '') }}" @readonly(! $new)>
|
||||||
|
|
||||||
<div class="invalid-feedback pb-2">
|
<div class="invalid-feedback pb-2">
|
||||||
|
@ -3,22 +3,20 @@
|
|||||||
@foreach($o->langtags as $langtag)
|
@foreach($o->langtags as $langtag)
|
||||||
@foreach(($o->tagValues($langtag)->count() ? $o->tagValues($langtag) : [$langtag => NULL]) as $key => $value)
|
@foreach(($o->tagValues($langtag)->count() ? $o->tagValues($langtag) : [$langtag => NULL]) as $key => $value)
|
||||||
@if($edit)
|
@if($edit)
|
||||||
<div class="select-group">
|
<x-form.select
|
||||||
<x-form.select
|
@class(['is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)),'mb-1','border-focus'=>! $o->tagValuesOld($langtag)->contains($value)])
|
||||||
@class(['is-invalid'=>($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index)),'mb-1','border-focus'=>! $o->tagValuesOld($langtag)->contains($value)])
|
id="{{ $o->name_lc }}_{{$loop->index}}{{$template?->name ?: ''}}"
|
||||||
id="{{ $o->name_lc }}_{{$loop->index}}{{$template?->name ?: ''}}"
|
name="{{ $o->name_lc }}[{{ $langtag }}][]"
|
||||||
name="{{ $o->name_lc }}[{{ $langtag }}][]"
|
:value="$value"
|
||||||
:value="$value"
|
:options="$template->attributeOptions($o->name_lc)"
|
||||||
:options="$template->attributeOptions($o->name_lc)"
|
allowclear="true"
|
||||||
allowclear="true"
|
:disabled="! $new"
|
||||||
:disabled="! $new"
|
:readonly="false"/>
|
||||||
:readonly="false"/>
|
|
||||||
|
|
||||||
<div class="invalid-feedback pb-2">
|
<div class="invalid-feedback pb-2">
|
||||||
@if($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index))
|
@if($e=$errors->get($o->name_lc.'.'.$langtag.'.'.$loop->index))
|
||||||
{{ join('|',$e) }}
|
{{ join('|',$e) }}
|
||||||
@endif
|
@endif
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
{{ $o->render_item_old($langtag.'.'.$key) }}
|
{{ $o->render_item_old($langtag.'.'.$key) }}
|
||||||
|
@ -1,78 +1,7 @@
|
|||||||
<x-form.base {{ $attributes }}>
|
@isset($name)
|
||||||
@isset($name)
|
<input type="hidden" id="{{ $id ?? $name }}_disabled" name="{{ $name }}" value="" disabled>
|
||||||
<input type="hidden" id="{{ $id ?? $name }}_disabled" name="{{ $name }}" value="" disabled>
|
@endisset
|
||||||
@endisset
|
|
||||||
|
|
||||||
<select class="form-select @error($old ?? $id ?? $name) is-invalid @enderror" id="{{ $id ?? $name}}" @isset($name)name="{{ $name }}"@endisset @required($required ?? FALSE) @disabled($disabled ?? FALSE)>
|
<div class="input-group">
|
||||||
@if((empty($value) && ! empty($options)) || isset($addnew))
|
<x-select :id="$id ?? NULL" :name="$name ?? NULL" :options="$options ?? []" :value="$value ?? NULL" :class="$class ?? NULL"/>
|
||||||
<option value=""></option>
|
</div>
|
||||||
|
|
||||||
@isset($addnew)
|
|
||||||
<option value="new">{{ $addnew ?: 'Add New' }}</option>
|
|
||||||
@endisset
|
|
||||||
@endif
|
|
||||||
@isset($options)
|
|
||||||
@empty($groupby)
|
|
||||||
@foreach($options as $option)
|
|
||||||
@continue(! Arr::get($option,'value'))
|
|
||||||
<option value="{{ Arr::get($option,'id') }}" @selected(Arr::get($option,'id') == collect(old())->dot()->get(isset($old) ? $old.'.0' : ($id ?? $name),$value ?? ''))>{{ Arr::get($option,'value') }}</option>
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
@else
|
|
||||||
@foreach($options->groupBy($groupby) as $group)
|
|
||||||
<optgroup label="{{ Arr::get($group->first(),$groupby) }}">
|
|
||||||
@foreach($group as $option)
|
|
||||||
@continue(! Arr::get($option,'value'))
|
|
||||||
<option value="{{ Arr::get($option,'id') }}" @selected(Arr::get($option,'id') == collect(old())->dot()->get(isset($old) ? $old.'.0' : ($id ?? $name),$value ?? ''))>{{ Arr::get($option,'value') }}</option>
|
|
||||||
@endforeach
|
|
||||||
</optgroup>
|
|
||||||
@endforeach
|
|
||||||
@endempty
|
|
||||||
@endisset
|
|
||||||
</select>
|
|
||||||
</x-form.base>
|
|
||||||
|
|
||||||
@section('page-scripts')
|
|
||||||
<script type="text/javascript">
|
|
||||||
// Select doesnt support read only so we'll use disable and a new field
|
|
||||||
@isset($name)
|
|
||||||
function {{$id ?? $name}}_readonly(on) {
|
|
||||||
if (on) {
|
|
||||||
$('#{{ $name }}').prop('disabled',true);
|
|
||||||
$('#{{ $name }}_disabled').prop('disabled',false).val($('#{{ $name }}').val());
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('#{{ $name }}').prop('disabled',false);
|
|
||||||
$('#{{ $name }}_disabled').prop('disabled',true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@endisset
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
$('#{{ $id ?? $name }}').select2({
|
|
||||||
theme: 'bootstrap-5',
|
|
||||||
dropdownAutoWidth: true,
|
|
||||||
width: 'style',
|
|
||||||
allowClear: {{ $allowclear ?? 'false' }},
|
|
||||||
placeholder: '{{ $placeholder ?? '' }}',
|
|
||||||
multiple: {{ $multiple ?? 'false' }},
|
|
||||||
@isset($addvalues)
|
|
||||||
tags: true,
|
|
||||||
@endisset
|
|
||||||
});
|
|
||||||
|
|
||||||
@if(isset($multiple) && (! $multiple))
|
|
||||||
$('#{{ $id ?? $name }}').val(' ');
|
|
||||||
$('#{{ $id ?? $name }}').trigger('change');
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@isset($options)
|
|
||||||
@if(($autoselect ?? FALSE) && $options->count() === 1)
|
|
||||||
$('#{{ $id ?? $name }}')
|
|
||||||
.val('{{ $options->first()['id'] }}')
|
|
||||||
.trigger("change")
|
|
||||||
@endif
|
|
||||||
@endisset
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@append
|
|
72
resources/views/components/select.blade.php
Normal file
72
resources/views/components/select.blade.php
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<select class="form-select {{ $class }} @error($old ?? $id ?? $name) is-invalid @enderror" id="{{ $id ?? $name}}" @isset($name)name="{{ $name }}"@endisset @required($required ?? FALSE) @disabled($disabled ?? FALSE)>
|
||||||
|
@if((empty($value) && ! empty($options)) || isset($addnew))
|
||||||
|
<option value=""></option>
|
||||||
|
|
||||||
|
@isset($addnew)
|
||||||
|
<option value="new">{{ $addnew ?: 'Add New' }}</option>
|
||||||
|
@endisset
|
||||||
|
@endif
|
||||||
|
@isset($options)
|
||||||
|
@empty($groupby)
|
||||||
|
@foreach($options as $option)
|
||||||
|
@continue(! Arr::get($option,'value'))
|
||||||
|
<option value="{{ Arr::get($option,'id') }}" @selected(Arr::get($option,'id') == collect(old())->dot()->get(isset($old) ? $old.'.0' : ($id ?? $name),$value ?? ''))>{{ Arr::get($option,'value') }}</option>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@else
|
||||||
|
@foreach($options->groupBy($groupby) as $group)
|
||||||
|
<optgroup label="{{ Arr::get($group->first(),$groupby) }}">
|
||||||
|
@foreach($group as $option)
|
||||||
|
@continue(! Arr::get($option,'value'))
|
||||||
|
<option value="{{ Arr::get($option,'id') }}" @selected(Arr::get($option,'id') == collect(old())->dot()->get(isset($old) ? $old.'.0' : ($id ?? $name),$value ?? ''))>{{ Arr::get($option,'value') }}</option>
|
||||||
|
@endforeach
|
||||||
|
</optgroup>
|
||||||
|
@endforeach
|
||||||
|
@endempty
|
||||||
|
@endisset
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@section('page-scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
// Select doesnt support read only so we'll use disable and a new field
|
||||||
|
@isset($name)
|
||||||
|
function {{$id ?? $name}}_readonly(on) {
|
||||||
|
if (on) {
|
||||||
|
$('#{{ $name }}').prop('disabled',true);
|
||||||
|
$('#{{ $name }}_disabled').prop('disabled',false).val($('#{{ $name }}').val());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('#{{ $name }}').prop('disabled',false);
|
||||||
|
$('#{{ $name }}_disabled').prop('disabled',true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@endisset
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#{{ $id ?? $name }}').select2({
|
||||||
|
theme: 'bootstrap-5',
|
||||||
|
dropdownAutoWidth: false,
|
||||||
|
width: 'style',
|
||||||
|
allowClear: {{ $allowclear ?? 'false' }},
|
||||||
|
placeholder: '{{ $placeholder ?? '' }}',
|
||||||
|
multiple: {{ $multiple ?? 'false' }},
|
||||||
|
@isset($addvalues)
|
||||||
|
tags: true,
|
||||||
|
@endisset
|
||||||
|
});
|
||||||
|
|
||||||
|
@if(isset($multiple) && (! $multiple))
|
||||||
|
$('#{{ $id ?? $name }}').val(' ');
|
||||||
|
$('#{{ $id ?? $name }}').trigger('change');
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@isset($options)
|
||||||
|
@if(($autoselect ?? FALSE) && $options->count() === 1)
|
||||||
|
$('#{{ $id ?? $name }}')
|
||||||
|
.val('{{ $options->first()['id'] }}')
|
||||||
|
.trigger("change")
|
||||||
|
@endif
|
||||||
|
@endisset
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@append
|
@ -88,11 +88,11 @@
|
|||||||
<td>@lang('Used by ObjectClasses')</td>
|
<td>@lang('Used by ObjectClasses')</td>
|
||||||
<td>
|
<td>
|
||||||
@if($o->used_in_object_classes->count())
|
@if($o->used_in_object_classes->count())
|
||||||
@foreach($o->used_in_object_classes as $class => $structural)
|
@foreach($o->used_in_object_classes as $name => $structural)
|
||||||
@if($structural)
|
@if($structural)
|
||||||
<strong>
|
<strong>
|
||||||
@endif
|
@endif
|
||||||
<a class="objectclass" id="{{ strtolower($class) }}" href="#{{ strtolower($class) }}">{{ $class }}</a>
|
<a class="objectclass" id="{{ strtolower($name) }}" href="#{{ strtolower($name) }}">{{ $name }}</a>
|
||||||
@if($structural)
|
@if($structural)
|
||||||
</strong>
|
</strong>
|
||||||
@endif
|
@endif
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
@endif
|
@endif
|
||||||
@if($page_actions->get('copy'))
|
@if($page_actions->get('copy'))
|
||||||
<li>
|
<li>
|
||||||
<button class="btn btn-outline-dark p-1 m-1" id="entry-copy-move" data-bs-toggle="tooltip" data-bs-placement="bottom" title="@lang('Copy/Move')" disabled><i class="fas fa-fw fa-copy fs-5"></i></button>
|
<span id="entry-copy-move" data-bs-toggle="modal" data-bs-target="#page-modal">
|
||||||
|
<button class="btn btn-outline-dark p-1 m-1" data-bs-toggle="tooltip" data-bs-placement="bottom" title="@lang('Copy/Move')"><i class="fas fa-fw fa-copy fs-5"></i></button>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endif
|
||||||
@if($page_actions->get('edit'))
|
@if($page_actions->get('edit'))
|
||||||
@ -79,7 +81,7 @@
|
|||||||
<span data-bs-toggle="tab" href="#template-{{ $template->name }}" @class(['btn','btn-outline-focus','active'=>$loop->index === 0])><i class="fa fa-fw pe-2 {{ $template->icon }}"></i> {{ $template->title }}</span>
|
<span data-bs-toggle="tab" href="#template-{{ $template->name }}" @class(['btn','btn-outline-focus','active'=>$loop->index === 0])><i class="fa fa-fw pe-2 {{ $template->icon }}"></i> {{ $template->title }}</span>
|
||||||
@endforeach
|
@endforeach
|
||||||
@if($o->templates->count())
|
@if($o->templates->count())
|
||||||
<span data-bs-toggle="tab" href="#template-default" @class(['btn','btn-outline-focus','p-1','active'=>(! $o->templates->count())])>{{ __('LDAP Entry') }}</span>
|
<span data-bs-toggle="tab" href="#template-default" @class(['btn','btn-outline-focus','p-1','active'=>(! $o->templates->count())])><i class="fa fa-fw fa-list pe-2"></i> {{ __('LDAP Entry') }}</span>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -226,6 +228,25 @@
|
|||||||
var that = $(this).find('.modal-content');
|
var that = $(this).find('.modal-content');
|
||||||
|
|
||||||
switch ($(item.relatedTarget).attr('id')) {
|
switch ($(item.relatedTarget).attr('id')) {
|
||||||
|
case 'entry-copy-move':
|
||||||
|
$.ajax({
|
||||||
|
method: 'GET',
|
||||||
|
url: '{{ url('modal/copy-move') }}/'+dn,
|
||||||
|
dataType: 'html',
|
||||||
|
cache: false,
|
||||||
|
beforeSend: function() {
|
||||||
|
that.empty().append('<span class="p-3"><i class="fas fa-3x fa-spinner fa-pulse"></i></span>');
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
that.empty().html(data);
|
||||||
|
},
|
||||||
|
error: function(e) {
|
||||||
|
if (e.status !== 412)
|
||||||
|
alert('That didnt work? Please try again....');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
case 'entry-delete':
|
case 'entry-delete':
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
|
@ -30,7 +30,13 @@
|
|||||||
</thead>
|
</thead>
|
||||||
@foreach($result as $item)
|
@foreach($result as $item)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $item->get('dn') }}</td>
|
<td>
|
||||||
|
@if($x=$item->get('link'))
|
||||||
|
<a href="{{ url('/') }}#{{ $x }}">{{ $item->get('dn') }}</a>
|
||||||
|
@else
|
||||||
|
{{ $item->get('dn') }}
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
<td>{{ $item->get('result') }}</td>
|
<td>{{ $item->get('result') }}</td>
|
||||||
<td class="text-end">{{ $item->get('line') }}</td>
|
<td class="text-end">{{ $item->get('line') }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
178
resources/views/modals/entry-copy-move.blade.php
Normal file
178
resources/views/modals/entry-copy-move.blade.php
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<div class="modal-header bg-dark text-white">
|
||||||
|
<h1 class="modal-title fs-5">
|
||||||
|
<i class="fas fa-fw fa-exclamation-triangle"></i> @lang('Rename') <strong>{{ $x=Crypt::decryptString($dn) }}</strong>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body">
|
||||||
|
<span>
|
||||||
|
@lang('New') DN: <strong><span id="newdn" class="fs-4 opacity-50"><small class="fs-5">[@lang('Select Base')]</small></span></strong>
|
||||||
|
</span>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<form id="entry-rename-form" method="POST" action="{{ url('entry/copy-move') }}">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="dn" value="{{ $dn }}">
|
||||||
|
<input type="hidden" name="to_dn" value="">
|
||||||
|
|
||||||
|
<div class="row pb-3">
|
||||||
|
<div class="col-4">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="delete-checkbox" name="delete" value="1">
|
||||||
|
<label class="form-check-label" for="delete-checkbox">
|
||||||
|
<i class="fas fa-fw fa-trash"></i> @lang('Delete after Copy')
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<span class="input-group-text" id="label">@lang('Select Base of Entry')</span>
|
||||||
|
<input type="text" id="rdn" class="form-control d-none" style="width:20%;" placeholder="{{ $rdn=collect(explode(',',$x))->first() }}" value="{{ $rdn }}">
|
||||||
|
<span class="input-group-text p-1 d-none">,</span>
|
||||||
|
<select class="form-select w-25 d-none" id="rename-subbase" disabled style="width:30%;"></select>
|
||||||
|
<span class="input-group-text p-1 d-none">,</span>
|
||||||
|
<select class="form-select w-25" id="rename-base" style="width:30%;" disabled></select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<x-modal.close/>
|
||||||
|
<button id="entry-rename" type="button" class="btn btn-sm btn-primary">@lang('Copy')</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function refreshdn(value) {
|
||||||
|
$('#newdn')
|
||||||
|
.removeClass('opacity-50')
|
||||||
|
.empty()
|
||||||
|
.append(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var rdn = '{{ $rdn }}';
|
||||||
|
var base = '';
|
||||||
|
|
||||||
|
var that=$('#newdn');
|
||||||
|
|
||||||
|
// Get our bases
|
||||||
|
$.ajax({
|
||||||
|
method: 'POST',
|
||||||
|
url: '{{ url('ajax/subordinates') }}',
|
||||||
|
dataType: 'json',
|
||||||
|
cache: false,
|
||||||
|
beforeSend: function() {
|
||||||
|
that.empty().append('<span class="p-3"><i class="fas fa-xs fa-spinner fa-pulse"></i></span>');
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
that.empty().html('<small class="fs-5">[@lang('Select Base')]</small>');
|
||||||
|
|
||||||
|
$('#rename-base').children().remove();
|
||||||
|
$('#rename-base').append('<option value=""></option>');
|
||||||
|
data.forEach(function(item) {
|
||||||
|
$('#rename-base').append('<option value="'+item.id+'">'+item.value+'</option>');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rename-base').prop('disabled',false);
|
||||||
|
},
|
||||||
|
error: function(e) {
|
||||||
|
if (e.status !== 412)
|
||||||
|
alert('That didnt work? Please try again....');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// The base DN container
|
||||||
|
$('#rename-base').select2({
|
||||||
|
dropdownParent: $('#page-modal'),
|
||||||
|
theme: 'bootstrap-5',
|
||||||
|
dropdownAutoWidth: true,
|
||||||
|
width: 'style',
|
||||||
|
allowClear: false,
|
||||||
|
placeholder: 'Choose Base',
|
||||||
|
})
|
||||||
|
.on('change',function() {
|
||||||
|
$(this).prev().removeClass('d-none');
|
||||||
|
$('#rename-subbase').removeClass('d-none')
|
||||||
|
.prev().removeClass('d-none')
|
||||||
|
.prev().removeClass('d-none');
|
||||||
|
$('#label').empty().append("@lang('Complete Path')");
|
||||||
|
|
||||||
|
base = '';
|
||||||
|
if (x=$('#rename-subbase option:selected').text())
|
||||||
|
base += x+',';
|
||||||
|
base += $('#rename-base option:selected').text();
|
||||||
|
|
||||||
|
refreshdn(rdn+','+base);
|
||||||
|
var newdn = '';
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
method: 'POST',
|
||||||
|
url:'{{ url('ajax/children') }}',
|
||||||
|
data: {_key: $(this).val() },
|
||||||
|
dataType: 'json',
|
||||||
|
cache: false,
|
||||||
|
beforeSend: function() {
|
||||||
|
newdn = that.text();
|
||||||
|
console.log(newdn);
|
||||||
|
that.empty().append('<span class="p-3"><i class="fas fa-xs fa-spinner fa-pulse"></i></span>');
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
that.empty().text(newdn);
|
||||||
|
$('#rename-subbase').children().remove();
|
||||||
|
$('#rename-subbase').append('<option value=""></option>');
|
||||||
|
data.forEach(function(item) {
|
||||||
|
$('#rename-subbase').append('<option value="'+item.item+'">'+item.title+'</option>');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rename-subbase').prop('disabled',false);
|
||||||
|
},
|
||||||
|
error: function(e) {
|
||||||
|
if (e.status !== 412)
|
||||||
|
alert('That didnt work? Please try again....');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Optional make a child a new branch
|
||||||
|
$('#rename-subbase').select2({
|
||||||
|
dropdownParent: $('#page-modal'),
|
||||||
|
theme: 'bootstrap-5',
|
||||||
|
dropdownAutoWidth: true,
|
||||||
|
width: 'style',
|
||||||
|
allowClear: true,
|
||||||
|
placeholder: 'New Subordinate (optional)',
|
||||||
|
})
|
||||||
|
.on('change',function(item) {
|
||||||
|
base = '';
|
||||||
|
if (x=$('#rename-subbase option:selected').text())
|
||||||
|
base += x+',';
|
||||||
|
base += $('#rename-base option:selected').text();
|
||||||
|
|
||||||
|
refreshdn(rdn+','+base);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Complete the RDN
|
||||||
|
$('#rdn').on('input',function(item) {
|
||||||
|
rdn = $(this).val();
|
||||||
|
refreshdn(rdn+','+base);
|
||||||
|
|
||||||
|
$('button[id=entry-rename]').attr('disabled',! rdn.includes('='));
|
||||||
|
})
|
||||||
|
|
||||||
|
// The submit button text
|
||||||
|
$('input#delete-checkbox').on('change',function() {
|
||||||
|
$('button#entry-rename').html($(this).prop('checked') ? '{{ __('Move') }}' : '{{ __('Copy') }}');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Submit
|
||||||
|
$('button[id=entry-rename]').on('click',function() {
|
||||||
|
$('input[name=to_dn]').val(rdn+','+base);
|
||||||
|
$('form#entry-rename-form').submit();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
@ -43,18 +43,21 @@ Route::controller(HomeController::class)->group(function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Route::match(['get','post'],'entry/add','entry_add');
|
Route::match(['get','post'],'entry/add','entry_add');
|
||||||
|
Route::post('entry/attr/add/{id}','entry_attr_add');
|
||||||
Route::post('entry/create','entry_create');
|
Route::post('entry/create','entry_create');
|
||||||
|
Route::post('entry/copy-move','entry_copy_move');
|
||||||
Route::post('entry/delete','entry_delete');
|
Route::post('entry/delete','entry_delete');
|
||||||
Route::get('entry/export/{id}','entry_export');
|
Route::get('entry/export/{id}','entry_export');
|
||||||
Route::post('entry/password/check/','entry_password_check');
|
Route::post('entry/password/check/','entry_password_check');
|
||||||
Route::post('entry/attr/add/{id}','entry_attr_add');
|
|
||||||
Route::post('entry/objectclass/add','entry_objectclass_add');
|
Route::post('entry/objectclass/add','entry_objectclass_add');
|
||||||
Route::post('entry/rename','entry_rename');
|
Route::post('entry/rename','entry_rename');
|
||||||
|
|
||||||
Route::post('entry/update/commit','entry_update');
|
Route::post('entry/update/commit','entry_update');
|
||||||
Route::post('entry/update/pending','entry_pending_update');
|
Route::post('entry/update/pending','entry_pending_update');
|
||||||
|
|
||||||
Route::post('import/process/{type}','import');
|
Route::post('import/process/{type}','import');
|
||||||
|
|
||||||
|
Route::view('modal/copy-move/{dn}','modals.entry-copy-move');
|
||||||
Route::view('modal/delete/{dn}','modals.entry-delete');
|
Route::view('modal/delete/{dn}','modals.entry-delete');
|
||||||
Route::view('modal/export/{dn}','modals.entry-export');
|
Route::view('modal/export/{dn}','modals.entry-export');
|
||||||
Route::view('modal/rename/{dn}','modals.entry-rename');
|
Route::view('modal/rename/{dn}','modals.entry-rename');
|
||||||
@ -69,4 +72,5 @@ Route::controller(AjaxController::class)
|
|||||||
Route::post('children','children');
|
Route::post('children','children');
|
||||||
Route::post('schema/view','schema_view');
|
Route::post('schema/view','schema_view');
|
||||||
Route::post('schema/objectclass/attrs/{id}','schema_objectclass_attrs');
|
Route::post('schema/objectclass/attrs/{id}','schema_objectclass_attrs');
|
||||||
|
Route::post('subordinates','subordinates');
|
||||||
});
|
});
|
48
templates/mail_account.json
Normal file
48
templates/mail_account.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"title": "Generic: Mail Account",
|
||||||
|
"description": "New Mail Account",
|
||||||
|
"enabled": true,
|
||||||
|
"icon": "fa-at",
|
||||||
|
"rdn": "cn",
|
||||||
|
"regexp": "/^ou=.+,?/",
|
||||||
|
|
||||||
|
"objectclasses": [
|
||||||
|
"inetOrgPerson"
|
||||||
|
],
|
||||||
|
|
||||||
|
"attributes": {
|
||||||
|
"mail": {
|
||||||
|
"display": "Email (mail)",
|
||||||
|
"order": 1,
|
||||||
|
"onchange": [
|
||||||
|
"=autoFill(cn;%mail|0-0/k|@%)",
|
||||||
|
"=autoFill(description;%mail|1-0/k|@%)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"givenName": {
|
||||||
|
"display": "First Name",
|
||||||
|
"onchange": [
|
||||||
|
"=autoFill(cn;%givenName% %sn/U%)",
|
||||||
|
"=autoFill(uid;%givenName|0-1/l%%sn/l%)"
|
||||||
|
],
|
||||||
|
"order": 3
|
||||||
|
},
|
||||||
|
"sn": {
|
||||||
|
"display": "Last Name",
|
||||||
|
"onchange": [
|
||||||
|
"=autoFill(cn;%givenName% %sn/U%)",
|
||||||
|
"=autoFill(uid;%givenName|0-1/l%%sn/l%)"
|
||||||
|
],
|
||||||
|
"order": 4
|
||||||
|
},
|
||||||
|
"cn": {
|
||||||
|
"display": "Common Name",
|
||||||
|
"readonly": true,
|
||||||
|
"order": 2
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"display": "Description",
|
||||||
|
"order": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,8 +7,11 @@ use Illuminate\Support\Facades\Auth;
|
|||||||
use Illuminate\Support\Facades\Crypt;
|
use Illuminate\Support\Facades\Crypt;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
use App\Ldap\Entry;
|
||||||
|
|
||||||
class ImportTest extends TestCase
|
class ImportTest extends TestCase
|
||||||
{
|
{
|
||||||
|
// Test delete and create an entry
|
||||||
public function testLDIF_Import()
|
public function testLDIF_Import()
|
||||||
{
|
{
|
||||||
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
@ -27,7 +30,7 @@ class ImportTest extends TestCase
|
|||||||
$x->delete();
|
$x->delete();
|
||||||
$this->assertEquals(NULL,config('server')->fetch($dn));
|
$this->assertEquals(NULL,config('server')->fetch($dn));
|
||||||
|
|
||||||
$file = new UploadedFile($import_file,'ldif-import.ldif',null,null,true);
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
$response = $this
|
$response = $this
|
||||||
->actingAs(Auth::user())
|
->actingAs(Auth::user())
|
||||||
@ -44,5 +47,256 @@ class ImportTest extends TestCase
|
|||||||
// Check that it hsa been created
|
// Check that it hsa been created
|
||||||
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
$this->assertTrue($x->exists);
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
$this->assertCount(4,$x->getObject('objectClass'));
|
||||||
|
$this->assertCount(0,array_diff(['inetOrgPerson','posixAccount','top','shadowAccount'],$x->getObject('objectClass')->values->toArray()));
|
||||||
|
$this->assertCount(1,$x->getObject('mail'));
|
||||||
|
$this->assertContains(Entry::TAG_NOTAG.'.0',$x->getObject('mail')->values->dot()->keys());
|
||||||
|
$this->assertContains('bart.simpson@example.com',$x->getObject('mail')->values->dot());
|
||||||
|
$this->assertEquals(3024,strlen($x->getObject('jpegphoto')->values->dot()->first()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Replace() {
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.1.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->values);
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues());
|
||||||
|
$this->assertCount(0,array_diff(['barts@email.com','secondmail@example.com'],$x->getObject('mail')->values->dot()->values()->toArray()));
|
||||||
|
|
||||||
|
$this->assertCount(1,$x->getObject('facsimiletelephonenumber')->values);
|
||||||
|
$this->assertCount(1,$x->getObject('facsimiletelephonenumber')->tagValues());
|
||||||
|
$this->assertCount(0,array_diff(['+1 555 222 4444'],$x->getObject('facsimiletelephonenumber')->values->dot()->values()->toArray()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Delete() {
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.2.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->values);
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues());
|
||||||
|
$this->assertCount(0,array_diff(['barts@email.com','secondmail@example.com'],$x->getObject('mail')->values->dot()->values()->toArray()));
|
||||||
|
|
||||||
|
$this->assertNull($x->getObject('facsimiletelephonenumber'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Append_Langtag() {
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.3.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertCount(3,$x->getObject('mail')->values);
|
||||||
|
$this->assertCount(4,$x->getObject('mail')->values->dot());
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues());
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->tagValues('lang-au'));
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->tagValues('lang-cn'));
|
||||||
|
$this->assertCount(0,array_diff(['barts@email.com','secondmail@example.com','au-email@example.com','cn-email@example.com'],$x->getObject('mail')->values->dot()->values()->toArray()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Replace_Langtag() {
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.4.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertCount(3,$x->getObject('mail')->values);
|
||||||
|
$this->assertCount(4,$x->getObject('mail')->values->dot());
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues());
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->tagValues('lang-au'));
|
||||||
|
$this->assertCount(1,$x->getObject('mail')->tagValues('lang-cn'));
|
||||||
|
$this->assertCount(0,array_diff(['notag@example.com','notag1@example.com','au-tag@example.com','cn-tag@example.com'],$x->getObject('mail')->values->dot()->values()->toArray()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Add_Base64()
|
||||||
|
{
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.5.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertEquals(3396,strlen($x->getObject('jpegphoto')->values->dot()->first()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Replace_Base64()
|
||||||
|
{
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.6.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertEquals(3024,strlen($x->getObject('jpegphoto')->values->dot()->first()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLDIF_Import_Multi() {
|
||||||
|
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
|
||||||
|
$import_file = __DIR__.'/data/ldif-import.7.ldif';
|
||||||
|
|
||||||
|
$this->assertTrue($this->login());
|
||||||
|
|
||||||
|
// Check that it exists
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
|
||||||
|
$file = new UploadedFile($import_file,basename($import_file),null,null,true);
|
||||||
|
|
||||||
|
$response = $this
|
||||||
|
->actingAs(Auth::user())
|
||||||
|
->from('/import')
|
||||||
|
->post('/import/process/ldif',[
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'_key'=>Crypt::encryptString('*import|_NOP'),
|
||||||
|
'file' => $file,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response->assertSuccessful();
|
||||||
|
|
||||||
|
// Check that it hsa been created
|
||||||
|
$this->assertEquals($dn,$x=config('server')->fetch($dn));
|
||||||
|
$this->assertTrue($x->exists);
|
||||||
|
$this->assertCount(4,$x->getObject('objectclass'));
|
||||||
|
|
||||||
|
$this->assertCount(3,$x->getObject('mail')->values);
|
||||||
|
$this->assertCount(6,$x->getObject('mail')->values->dot());
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues());
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues('lang-au'));
|
||||||
|
$this->assertCount(2,$x->getObject('mail')->tagValues('lang-cn'));
|
||||||
|
$this->assertCount(2,array_diff(['notag1@simpsons.example.com','notag2@simpsons.example.com','au-tag@simpsons.example.com','cn-tag@simpsons.example.com'],$x->getObject('mail')->values->dot()->values()->toArray()));
|
||||||
}
|
}
|
||||||
}
|
}
|
12
tests/Feature/data/ldif-import.1.ldif
Normal file
12
tests/Feature/data/ldif-import.1.ldif
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Multiple actions
|
||||||
|
version: 1
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype: modify
|
||||||
|
replace: mail
|
||||||
|
mail: barts@email.com
|
||||||
|
-
|
||||||
|
add: mail
|
||||||
|
mail: secondmail@example.com
|
||||||
|
-
|
||||||
|
add: facsimiletelephonenumber
|
||||||
|
facsimiletelephonenumber: +1 555 222 4444
|
5
tests/Feature/data/ldif-import.2.ldif
Normal file
5
tests/Feature/data/ldif-import.2.ldif
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Delete actions
|
||||||
|
version: 1
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype:modify
|
||||||
|
delete: facsimiletelephonenumber
|
7
tests/Feature/data/ldif-import.3.ldif
Normal file
7
tests/Feature/data/ldif-import.3.ldif
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Add lang-tag option with multiple values
|
||||||
|
version: 1
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype: modify
|
||||||
|
add: mail
|
||||||
|
mail;lang-au: au-email@example.com
|
||||||
|
mail;lang-cn: cn-email@example.com
|
9
tests/Feature/data/ldif-import.4.ldif
Normal file
9
tests/Feature/data/ldif-import.4.ldif
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Multiple values with tags and replace
|
||||||
|
version: 1
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype: modify
|
||||||
|
replace: mail
|
||||||
|
mail: notag@example.com
|
||||||
|
mail: notag1@example.com
|
||||||
|
mail;lang-au: au-tag@example.com
|
||||||
|
mail;lang-cn: cn-tag@example.com
|
68
tests/Feature/data/ldif-import.5.ldif
Normal file
68
tests/Feature/data/ldif-import.5.ldif
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
version: 1
|
||||||
|
# Entry 1: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype:modify
|
||||||
|
delete:jpegphoto
|
||||||
|
-
|
||||||
|
add:jpegphoto
|
||||||
|
jpegPhoto:: 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
|
||||||
|
zt1Zj1J/wDtsTcHQxCJtll8Rr3105kOg4DkF//Z
|
61
tests/Feature/data/ldif-import.6.ldif
Normal file
61
tests/Feature/data/ldif-import.6.ldif
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
version: 1
|
||||||
|
# Entry 1: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype:modify
|
||||||
|
delete:jpegphoto
|
||||||
|
-
|
||||||
|
replace:jpegphoto
|
||||||
|
jpegPhoto:: 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
|
12
tests/Feature/data/ldif-import.7.ldif
Normal file
12
tests/Feature/data/ldif-import.7.ldif
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
version: 1
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype: modify
|
||||||
|
delete:mail
|
||||||
|
|
||||||
|
dn: cn=Bart Simpson,ou=People,o=Simpsons
|
||||||
|
changetype: modify
|
||||||
|
add: mail
|
||||||
|
mail: notag1@simpsons.example.com
|
||||||
|
mail: notag2@simpsons.example.com
|
||||||
|
mail;lang-au: au-email@simpsons.example.com
|
||||||
|
mail;lang-cn: cn-email@simpsons.example.com
|
Loading…
x
Reference in New Issue
Block a user