mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Arreglado bug añadir usuarios con email repetido
This commit is contained in:
15
.idea/codeception.xml
generated
Normal file
15
.idea/codeception.xml
generated
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Codeception">
|
||||
<option name="configurations">
|
||||
<list>
|
||||
<Configuration>
|
||||
<option name="path" value="$PROJECT_DIR$/tests" />
|
||||
</Configuration>
|
||||
<Configuration>
|
||||
<option name="path" value="$PROJECT_DIR$/ci4/tests" />
|
||||
</Configuration>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
7
.idea/php.xml
generated
7
.idea/php.xml
generated
@ -55,6 +55,13 @@
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/codeigniter4/shield" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/codeigniter4/settings" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/codeigniter4/framework" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/nicolab/php-ftp-client" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/hermawan/codeigniter4-datatables" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/firebase/php-jwt" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/greenlion/php-sql-parser" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/paragonie/random_compat" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/paragonie/constant_time_encoding" />
|
||||
<path value="$PROJECT_DIR$/ci4/vendor/phpseclib/phpseclib" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.2">
|
||||
|
||||
16
.idea/phpspec.xml
generated
Normal file
16
.idea/phpspec.xml
generated
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PHPSpec">
|
||||
<suites>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$/ci4" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$/ci4" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
</suites>
|
||||
</component>
|
||||
</project>
|
||||
10
.idea/safekat.iml
generated
10
.idea/safekat.iml
generated
@ -7,6 +7,16 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/ci4/app/ThirdParty/DatatablesEditor/" isTestSource="false" packagePrefix="DataTables\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/ci4/tests" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/ci4/tests/_support" isTestSource="true" packagePrefix="Tests\Support\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/ci4/spec" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/firebase/php-jwt" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/greenlion/php-sql-parser" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/hermawan/codeigniter4-datatables" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/nicolab/php-ftp-client" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/paragonie/constant_time_encoding" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/paragonie/random_compat" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/ci4/vendor/phpseclib/phpseclib" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
||||
@ -245,7 +245,6 @@ class Auth extends ShieldAuth
|
||||
'required',
|
||||
'max_length[254]',
|
||||
'valid_email',
|
||||
'is_unique[auth_identities.secret]',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@ -97,7 +97,6 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion']
|
||||
|
||||
$routes->group('users', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
|
||||
$routes->get('', 'Users::index', ['as' => 'userList']);
|
||||
$routes->get('index', 'Users::index', ['as' => 'userIndex']);
|
||||
$routes->get('list', 'Users::index', ['as' => 'userList2']);
|
||||
$routes->get('add', 'Users::add', ['as' => 'newUser']);
|
||||
$routes->post('add', 'Users::add', ['as' => 'createUser']);
|
||||
|
||||
@ -87,7 +87,6 @@ class Users extends \App\Controllers\GoBaseController
|
||||
unset($postData['chatDepartments']);
|
||||
|
||||
// Marcar el username como NULL
|
||||
$postData['username'] = null;
|
||||
$sanitizedData = $this->sanitized($postData, true);
|
||||
|
||||
$noException = true;
|
||||
@ -99,35 +98,43 @@ class Users extends \App\Controllers\GoBaseController
|
||||
if ($this->canValidate()) :
|
||||
try {
|
||||
|
||||
// Crear el usuario si pasa la validación
|
||||
$user = new User([
|
||||
'username' => $sanitizedData['username'],
|
||||
'first_name' => $sanitizedData['first_name'],
|
||||
'last_name' => $sanitizedData['last_name'],
|
||||
'email' => $sanitizedData['email'],
|
||||
'password' => $sanitizedData['password'],
|
||||
'status' => $sanitizedData['status'] ?? 0,
|
||||
'active' => $sanitizedData['active'] ?? 0,
|
||||
]);
|
||||
$users->save($user);
|
||||
$successfulResult = true; // Hacked
|
||||
// The Email is unique
|
||||
if ($this->user_model->isEmailUnique($sanitizedData['email'])) {
|
||||
|
||||
// Crear el usuario si pasa la validación
|
||||
$user = new \CodeIgniter\Shield\Entities\User([
|
||||
'username' => null, // If you don't have a username, be sure to set the value to null anyway, so that it passes CodeIgniter's empty data check
|
||||
'first_name' => $sanitizedData['first_name'],
|
||||
'last_name' => $sanitizedData['last_name'],
|
||||
'cliente_id' => $sanitizedData['cliente_id'],
|
||||
'comments' => $sanitizedData['comments'],
|
||||
'email' => $sanitizedData['email'],
|
||||
'password' => $sanitizedData['password'],
|
||||
'status' => $sanitizedData['status'] ?? 0,
|
||||
'active' => $sanitizedData['active'] ?? 0,
|
||||
]);
|
||||
// Add the user to the system
|
||||
$users->save($user);
|
||||
$successfulResult = true; // Hacked
|
||||
|
||||
} // Email is not unique!
|
||||
else {
|
||||
$this->viewData['errorMessage'] = "El correo '". $sanitizedData['email'] ."' ya está registrado en el sistema";
|
||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
||||
$successfulResult = false; // Hacked
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
$noException = false;
|
||||
//$this->dealWithException($e);
|
||||
if (strpos($e->getMessage(), 'correo duplicado') !== false) {
|
||||
$this->viewData['errorMessage'] = "El correo electrónico ya está registrado en el sistema";
|
||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
||||
}
|
||||
|
||||
$this->viewData['errorMessage'] = $e->getMessage();
|
||||
}
|
||||
else:
|
||||
$this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Users.user'))]);
|
||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
||||
endif;
|
||||
|
||||
$thenRedirect = true; // Change this to false if you want your user to stay on the form after submission
|
||||
endif;
|
||||
|
||||
if ($noException && $successfulResult) :
|
||||
|
||||
$id = $users->getInsertID();
|
||||
|
||||
@ -30,14 +30,12 @@ class UserModel extends ShieldUserModel
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
|
||||
protected $validationRules = [
|
||||
"first_name" => "required|trim|max_length[150]",
|
||||
"last_name" => "required|trim|max_length[150]",
|
||||
'new_pwd' => 'permit_empty|min_length[8]',
|
||||
'new_pwd_confirm' => 'permit_empty|required_with[new_pwd]|matches[new_pwd]',
|
||||
"comments" => "permit_empty|trim|max_length[512]",
|
||||
'email' => 'required|valid_email|is_unique[auth_identities.secret]',
|
||||
"comments" => "permit_empty|trim|max_length[512]"
|
||||
];
|
||||
|
||||
protected $validationMessages = [
|
||||
@ -81,7 +79,16 @@ class UserModel extends ShieldUserModel
|
||||
// Método para comprobar si el email ya está registrado
|
||||
public function isEmailUnique($email)
|
||||
{
|
||||
return $this->where('email', $email)->countAllResults() == 0;
|
||||
$builder = $this->db
|
||||
->table("auth_identities t1") // La tabla correcta
|
||||
->select("t1.secret AS email")
|
||||
->where('secret', $email);
|
||||
|
||||
// Obtener resultados
|
||||
$result = $builder->get()->getRow();
|
||||
|
||||
// Devuelve true si no se encuentra el correo (es único), false en caso contrario
|
||||
return $result === null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@ class UserModel extends \App\Models\BaseModel
|
||||
|
||||
protected $allowedFields = [
|
||||
"username",
|
||||
"email",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"client_id",
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
name="save"
|
||||
value="<?= lang("Basic.global.Save") ?>"
|
||||
>
|
||||
<?= anchor(route_to("userIndex"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary"]) ?>
|
||||
<?= anchor(route_to("userList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary"]) ?>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- /.card-body -->
|
||||
|
||||
@ -1,122 +1,59 @@
|
||||
<?=$this->include('themes/_commonPartialsBs/datatables') ?>
|
||||
<?=$this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
<?=$this->section('content'); ?>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
<?= $this->section('content'); ?>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?=lang('Users.userList') ?></h3>
|
||||
<?=anchor(route_to('newUser'), lang('Basic.global.addNew').' '.lang('Users.user'), ['class'=>'btn btn-primary float-end']); ?>
|
||||
</div><!--//.card-header -->
|
||||
<div class="card-body">
|
||||
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?= lang('Users.userList') ?></h3>
|
||||
<?= anchor(route_to('newUser'), lang('Basic.global.addNew') . ' ' . lang('Users.user'), ['class' => 'btn btn-primary float-end']); ?>
|
||||
</div><!--//.card-header -->
|
||||
<div class="card-body">
|
||||
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
||||
|
||||
<table id="tableOfUsers" class="table table-striped table-hover using-data-table" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('Users.firstName') ?></th>
|
||||
<th><?= lang('Users.lastName') ?></th>
|
||||
<th><?= lang('Users.email') ?></th>
|
||||
<th><?= lang('Users.lastAccess') ?></th>
|
||||
<?php /*
|
||||
<th><?= lang('Users.mobile') ?></th>
|
||||
<th><?= lang('Users.email') ?></th>
|
||||
<th><?= lang('Users.address') ?></th>
|
||||
<th><?= lang('Users.city') ?></th>
|
||||
<th><?= lang('Users.state') ?></th>
|
||||
<th><?= lang('Users.country') ?></th>
|
||||
<th><?= lang('Users.zipCode') ?></th>
|
||||
<th><?= lang('Users.lastIp') ?></th>
|
||||
|
||||
<th><?= lang('Users.picture') ?></th>
|
||||
<th><?= lang('Users.language') ?></th>
|
||||
<th><?= lang('Users.blocked') ?></th>
|
||||
<th><?= lang('Users.emailConfirmed') ?></th>
|
||||
*/ ?>
|
||||
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($userList2 as $item ) : ?>
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->first_name) || strlen($item->first_name) < 51 ? esc($item->first_name) : character_limiter(esc($item->first_name), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->last_name) || strlen($item->last_name) < 51 ? esc($item->last_name) : character_limiter(esc($item->last_name), 50) ?>
|
||||
</td>
|
||||
<table id="tableOfUsers" class="table table-striped table-hover using-data-table"
|
||||
style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('Users.firstName') ?></th>
|
||||
<th><?= lang('Users.lastName') ?></th>
|
||||
<th><?= lang('Users.email') ?></th>
|
||||
<th><?= lang('Users.lastAccess') ?></th>
|
||||
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($userList2 as $item) : ?>
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->email) ? "" : character_limiter(esc(lang($item->email)), 50) ?>
|
||||
<?= empty($item->first_name) || strlen($item->first_name) < 51 ? esc($item->first_name) : character_limiter(esc($item->first_name), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle text-nowrap">
|
||||
<?= empty($item->last_active) ? '' : date('d/m/Y H:m:s', strtotime($item->last_active)) ?>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->last_name) || strlen($item->last_name) < 51 ? esc($item->last_name) : character_limiter(esc($item->last_name), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty(auth()->getProvider()->findById($item->id)->email) ? "" : character_limiter(esc(auth()->getProvider()->findById($item->id)->email), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle text-nowrap">
|
||||
<?= empty($item->last_active) ? '' : date('d/m/Y H:m:s', strtotime($item->last_active)) ?>
|
||||
</td>
|
||||
|
||||
<?php /*
|
||||
|
||||
<td class="align-middle">
|
||||
<?= empty($user_model->getGroupsTitles($item->token)) || strlen($user_model->getGroupsTitles($item->token)) < 51 ? esc($user_model->getGroupsTitles($item->token)) : character_limiter($user_model->getGroupsTitles($item->token), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle text-center text-nowrap">
|
||||
<?= anchor(route_to('editUser', $item->id), "<i class='ti ti-pencil ti-sm mx-2'></i>", ['class' => 'text-body', 'data-id' => $item->id,]); ?>
|
||||
<?= anchor('#confirm2delete', "<i class='ti ti-trash ti-sm mx-2'></i>", ['class' => 'text-body', 'data-href' => route_to('deleteUser', $item->id), 'data-bs-toggle' => 'modal', 'data-bs-target' => '#confirm2delete']); ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<td class="align-middle">
|
||||
<?= empty($item->mobile) || strlen($item->mobile) < 51 ? esc($item->mobile) : character_limiter(esc($item->mobile), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= esc($item->email) ?>
|
||||
</td>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!--//.card-body -->
|
||||
<div class="card-footer">
|
||||
|
||||
<td class="align-middle">
|
||||
<?= empty($item->address) || strlen($item->address) < 51 ? esc($item->address) : character_limiter(esc($item->address), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->city) || strlen($item->city) < 51 ? esc($item->city) : character_limiter(esc($item->city), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->state) || strlen($item->state) < 51 ? esc($item->state) : character_limiter(esc($item->state), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= esc($item->country) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->zip_code) || strlen($item->zip_code) < 51 ? esc($item->zip_code) : character_limiter(esc($item->zip_code), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->last_ip) || strlen($item->last_ip) < 51 ? esc($item->last_ip) : character_limiter(esc($item->last_ip), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle text-nowrap">
|
||||
<?= empty($item->last_access) ? '' : date('d/m/Y H:m:s', strtotime($item->last_access)) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= empty($item->picture) || strlen($item->picture) < 51 ? esc($item->picture) : character_limiter(esc($item->picture), 50) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= esc($item->language) ?>
|
||||
</td>
|
||||
|
||||
<td class="align-middle text-nowrap">
|
||||
<?= empty($item->blocked) ? '' : date('d/m/Y H:m:s', strtotime($item->blocked)) ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?= esc($item->email_confirmed) ?>
|
||||
</td>
|
||||
*/ ?>
|
||||
</div><!--//.card-footer -->
|
||||
</div><!--//.card -->
|
||||
</div><!--//.col -->
|
||||
</div><!--//.row -->
|
||||
|
||||
<td class="align-middle text-center text-nowrap">
|
||||
<?=anchor(route_to('editUser', $item->id), "<i class='ti ti-pencil ti-sm mx-2'></i>", ['class'=>'text-body', 'data-id'=>$item->id,]); ?>
|
||||
<?=anchor('#confirm2delete', "<i class='ti ti-trash ti-sm mx-2'></i>", ['class'=>'text-body', 'data-href'=>route_to('deleteUser', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!--//.card-body -->
|
||||
<div class="card-footer">
|
||||
|
||||
</div><!--//.card-footer -->
|
||||
</div><!--//.card -->
|
||||
</div><!--//.col -->
|
||||
</div><!--//.row -->
|
||||
|
||||
<?=$this->endSection() ?>
|
||||
<?= $this->endSection() ?>
|
||||
90
ci4/composer.lock
generated
90
ci4/composer.lock
generated
@ -438,33 +438,33 @@
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-escaper",
|
||||
"version": "2.13.0",
|
||||
"version": "2.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-escaper.git",
|
||||
"reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba"
|
||||
"reference": "0f7cb975f4443cf22f33408925c231225cfba8cb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba",
|
||||
"reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/0f7cb975f4443cf22f33408925c231225cfba8cb",
|
||||
"reference": "0f7cb975f4443cf22f33408925c231225cfba8cb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-ctype": "*",
|
||||
"ext-mbstring": "*",
|
||||
"php": "~8.1.0 || ~8.2.0 || ~8.3.0"
|
||||
"php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
|
||||
},
|
||||
"conflict": {
|
||||
"zendframework/zend-escaper": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27.0",
|
||||
"laminas/laminas-coding-standard": "~2.5.0",
|
||||
"infection/infection": "^0.27.9",
|
||||
"laminas/laminas-coding-standard": "~3.0.0",
|
||||
"maglnet/composer-require-checker": "^3.8.0",
|
||||
"phpunit/phpunit": "^9.6.7",
|
||||
"psalm/plugin-phpunit": "^0.18.4",
|
||||
"vimeo/psalm": "^5.9"
|
||||
"phpunit/phpunit": "^9.6.16",
|
||||
"psalm/plugin-phpunit": "^0.19.0",
|
||||
"vimeo/psalm": "^5.21.1"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -496,7 +496,7 @@
|
||||
"type": "community_bridge"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-10T08:35:13+00:00"
|
||||
"time": "2024-10-24T10:12:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "masterminds/html5",
|
||||
@ -986,24 +986,24 @@
|
||||
},
|
||||
{
|
||||
"name": "sabberworm/php-css-parser",
|
||||
"version": "v8.6.0",
|
||||
"version": "v8.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
|
||||
"reference": "d2fb94a9641be84d79c7548c6d39bbebba6e9a70"
|
||||
"reference": "f414ff953002a9b18e3a116f5e462c56f21237cf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d2fb94a9641be84d79c7548c6d39bbebba6e9a70",
|
||||
"reference": "d2fb94a9641be84d79c7548c6d39bbebba6e9a70",
|
||||
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf",
|
||||
"reference": "f414ff953002a9b18e3a116f5e462c56f21237cf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-iconv": "*",
|
||||
"php": ">=5.6.20"
|
||||
"php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.7.27"
|
||||
"phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "for parsing UTF-8 CSS"
|
||||
@ -1045,9 +1045,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
|
||||
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.6.0"
|
||||
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0"
|
||||
},
|
||||
"time": "2024-07-01T07:33:21+00:00"
|
||||
"time": "2024-10-27T17:38:32+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@ -1123,16 +1123,16 @@
|
||||
},
|
||||
{
|
||||
"name": "fakerphp/faker",
|
||||
"version": "v1.23.1",
|
||||
"version": "v1.24.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FakerPHP/Faker.git",
|
||||
"reference": "bfb4fe148adbf78eff521199619b93a52ae3554b"
|
||||
"reference": "a136842a532bac9ecd8a1c723852b09915d7db50"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b",
|
||||
"reference": "bfb4fe148adbf78eff521199619b93a52ae3554b",
|
||||
"url": "https://api.github.com/repos/FakerPHP/Faker/zipball/a136842a532bac9ecd8a1c723852b09915d7db50",
|
||||
"reference": "a136842a532bac9ecd8a1c723852b09915d7db50",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1180,9 +1180,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/FakerPHP/Faker/issues",
|
||||
"source": "https://github.com/FakerPHP/Faker/tree/v1.23.1"
|
||||
"source": "https://github.com/FakerPHP/Faker/tree/v1.24.0"
|
||||
},
|
||||
"time": "2024-01-02T13:46:09+00:00"
|
||||
"time": "2024-11-07T15:11:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mikey179/vfsstream",
|
||||
@ -1238,16 +1238,16 @@
|
||||
},
|
||||
{
|
||||
"name": "myclabs/deep-copy",
|
||||
"version": "1.12.0",
|
||||
"version": "1.12.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
|
||||
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
||||
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1286,7 +1286,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
|
||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1294,20 +1294,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-12T14:39:25+00:00"
|
||||
"time": "2024-11-08T17:47:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v5.2.0",
|
||||
"version": "v5.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb"
|
||||
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb",
|
||||
"reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b",
|
||||
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1350,9 +1350,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v5.2.0"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1"
|
||||
},
|
||||
"time": "2024-09-15T16:40:33+00:00"
|
||||
"time": "2024-10-08T18:51:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phar-io/manifest",
|
||||
@ -1793,16 +1793,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "9.6.20",
|
||||
"version": "9.6.21",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "49d7820565836236411f5dc002d16dd689cde42f"
|
||||
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f",
|
||||
"reference": "49d7820565836236411f5dc002d16dd689cde42f",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
|
||||
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1817,7 +1817,7 @@
|
||||
"phar-io/manifest": "^2.0.4",
|
||||
"phar-io/version": "^3.2.1",
|
||||
"php": ">=7.3",
|
||||
"phpunit/php-code-coverage": "^9.2.31",
|
||||
"phpunit/php-code-coverage": "^9.2.32",
|
||||
"phpunit/php-file-iterator": "^3.0.6",
|
||||
"phpunit/php-invoker": "^3.1.1",
|
||||
"phpunit/php-text-template": "^2.0.4",
|
||||
@ -1876,7 +1876,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.21"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1892,7 +1892,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-10T11:45:39+00:00"
|
||||
"time": "2024-09-19T10:50:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
@ -3037,5 +3037,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user