diff --git a/.gitignore b/.gitignore
index 3ce5adb..d283ae1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
.idea
vendor
+.phpunit*
+clover.xml
diff --git a/src/ApixMiddleware.php b/ApixMiddleware.php
similarity index 66%
rename from src/ApixMiddleware.php
rename to ApixMiddleware.php
index e961f0a..b75df0a 100644
--- a/src/ApixMiddleware.php
+++ b/ApixMiddleware.php
@@ -4,15 +4,18 @@
use Islandora\Chullo\IFedoraApi;
use Psr\Log\LoggerInterface;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\Event\RequestEvent;
+use Symfony\Component\HttpKernel\KernelEvents;
/**
* Retrieves a Fedora resource using the Apix-Ldp-Resource header.
*
* @package Islandora\Crayfish\Commons
*/
-class ApixMiddleware
+class ApixMiddleware implements EventSubscriberInterface
{
/**
@@ -39,18 +42,27 @@ public function __construct(
}
/**
- * @param \Symfony\Component\HttpFoundation\Request $request
- * @return \Psr\Http\Message\ResponseInterface
+ *
+ * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event
*/
- public function before(Request $request)
+ public function before(RequestEvent $event)
{
+
+ $request = $event->getRequest();
+
+ // Short circuit if this is an OPTIONS or HEAD request.
+ if (in_array(
+ strtoupper($request->getMethod()),
+ ['OPTIONS', 'HEAD']
+ )) {
+ return;
+ }
+
// Short circuit if there's no Apix-Ldp-Resource header.
if (!$request->headers->has("Apix-Ldp-Resource")) {
- $this->log->debug("Malformed request, no Apix-Ldp-Resource header present");
- return new Response(
- "Malformed request, no Apix-Ldp-Resource header present",
- 400
- );
+ $this->log->debug("No Apix-Ldp-Resource header present, no fedora_resource set");
+ $request->attributes->set('fedora_resource', false);
+ return;
}
// Get the resource.
@@ -64,10 +76,11 @@ public function before(Request $request)
'status' => $fedora_resource->getStatusCode(),
'headers' => $fedora_resource->getHeaders()
]);
- return new Response(
+ $event->setResponse(new Response(
$fedora_resource->getReasonPhrase(),
$status
- );
+ ));
+ return;
}
// Set the Fedora resource on the request.
@@ -89,4 +102,16 @@ protected function getFedoraResource(Request $request)
$headers
);
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedEvents()
+ {
+ return [
+ KernelEvents::REQUEST => [
+ ['before', 0],
+ ],
+ ];
+ }
}
diff --git a/src/CmdExecuteService.php b/CmdExecuteService.php
similarity index 95%
rename from src/CmdExecuteService.php
rename to CmdExecuteService.php
index 9568d12..cdf53e3 100644
--- a/src/CmdExecuteService.php
+++ b/CmdExecuteService.php
@@ -110,7 +110,7 @@ public function execute($cmd, $data)
// On error, extract message from STDERR and throw an exception.
if ($exit_code != 0) {
$msg = stream_get_contents($pipes[2]);
- $this->cleanup($pipes, $this->output, $process);
+ $this->cleanup($pipes, $process);
if ($this->log) {
$this->log->error('Process exited with non-zero code.', [
'exit_code' => $exit_code,
@@ -128,11 +128,11 @@ public function execute($cmd, $data)
ob_flush();
flush();
}
- $this->cleanup($pipes, $this->output, $process);
+ $this->cleanup($pipes, $process);
};
}
- protected function cleanup($pipes, $output, $process)
+ protected function cleanup($pipes, $process)
{
// Close STDERR
fclose($pipes[2]);
diff --git a/CrayfishCommonsBundle.php b/CrayfishCommonsBundle.php
new file mode 100644
index 0000000..a1794a9
--- /dev/null
+++ b/CrayfishCommonsBundle.php
@@ -0,0 +1,9 @@
+getRootNode();
+ $root->addDefaultsIfNotSet()
+ ->children()
+ ->scalarNode('fedora_base_uri')->cannotBeEmpty()->defaultValue('http://localhost:8080/fcrepo/rest')->end()
+ ->scalarNode('syn_config')->defaultValue(__DIR__ . '/../Resources/default_syn.xml')->end()
+ ->end();
+
+ return $treeBuilder;
+ }
+}
diff --git a/DependencyInjection/CrayfishCommonsExtension.php b/DependencyInjection/CrayfishCommonsExtension.php
new file mode 100644
index 0000000..f3d831d
--- /dev/null
+++ b/DependencyInjection/CrayfishCommonsExtension.php
@@ -0,0 +1,64 @@
+processConfiguration($configuration, $configs);
+
+ $loader = new YamlFileLoader(
+ $container,
+ new FileLocator(realpath(__DIR__ . '/../Resources/config'))
+ );
+ $loader->load('crayfish_commons.yaml');
+
+ if (!$container->has('Islandora\Crayfish\Commons\Syn\SettingsParser')) {
+ if (file_exists($config['syn_config'])) {
+ $xml = file_get_contents($config['syn_config']);
+ }
+ else {
+ throw new IOException("Security configuration not found. ${config['syn_config']}");
+ }
+
+ $container->register('Islandora\Crayfish\Commons\Syn\SettingsParser', SettingsParser::class)
+ ->setArgument('$xml', $xml);
+ }
+
+ if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtUserProvider')) {
+ $container->register('Islandora\Crayfish\Commons\Syn\JwtUserProvider', JwtUserProvider::class);
+ }
+ if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtFactory')) {
+ $container->register('Islandora\Crayfish\Commons\Syn\JwtFactory', JwtFactory::class);
+ }
+ if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtAuthenticator')) {
+ $container->register('Islandora\Crayfish\Commons\Syn\JwtAuthenticator', JwtAuthenticator::class)
+ ->setAutowired(true);
+ }
+
+ if (!$container->has('Islandora\Chullo\IFedoraApi')) {
+ $container->register('Islandora\Chullo\IFedoraApi', IFedoraApi::class)
+ ->setFactory('Islandora\Chullo\FedoraApi::create')
+ ->setArgument('$fedora_rest_url', $config['fedora_base_uri']);
+ $container->setAlias('Islandora\Chullo\FedoraApi', 'Islandora\Chullo\IFedoraApi');
+ }
+ }
+}
diff --git a/src/EntityMapper/EntityMapper.php b/EntityMapper/EntityMapper.php
similarity index 100%
rename from src/EntityMapper/EntityMapper.php
rename to EntityMapper/EntityMapper.php
diff --git a/src/EntityMapper/EntityMapperInterface.php b/EntityMapper/EntityMapperInterface.php
similarity index 100%
rename from src/EntityMapper/EntityMapperInterface.php
rename to EntityMapper/EntityMapperInterface.php
diff --git a/Resources/config/crayfish_commons.yaml b/Resources/config/crayfish_commons.yaml
new file mode 100644
index 0000000..32439f5
--- /dev/null
+++ b/Resources/config/crayfish_commons.yaml
@@ -0,0 +1,25 @@
+
+services:
+ _defaults:
+ autowire: true
+ autoconfigure: true
+ public: true
+
+ # These services rely on expected container available DI injections.
+ # Other services are loaded in the CrayfishCommonsExtension class.
+ Islandora\Crayfish\Commons\CmdExecuteService: ~
+
+ Islandora\Crayfish\Commons\EntityMapper\:
+ resource: '../../EntityMapper/*'
+
+ Islandora\Crayfish\Commons\ApixMiddleware:
+ tags:
+ - { name: kernel.event_subscriber, event: kernel.request }
+
+ # Aliases, if the class has not yet been instantiated it will be
+ # in CrayfishCommonsExtension class
+ crayfish.cmd_execute_service:
+ alias: Islandora\Crayfish\Commons\CmdExecuteService
+
+ # Map the concrete class to the interface.
+ Islandora\Crayfish\Commons\EntityMapper\EntityMapperInterface: '@Islandora\Crayfish\Commons\EntityMapper\EntityMapper'
diff --git a/Resources/default_syn.xml b/Resources/default_syn.xml
new file mode 100644
index 0000000..363b622
--- /dev/null
+++ b/Resources/default_syn.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Syn/JwtAuthenticator.php b/Syn/JwtAuthenticator.php
similarity index 76%
rename from src/Syn/JwtAuthenticator.php
rename to Syn/JwtAuthenticator.php
index db11e1c..c8a652f 100644
--- a/src/Syn/JwtAuthenticator.php
+++ b/Syn/JwtAuthenticator.php
@@ -36,23 +36,15 @@ public function __construct(
$this->sites = $parser->getSites();
}
- public function supports(Request $request)
- {
- return $request->headers->has('Authorization');
- }
-
+ /**
+ * {@inheritdoc}
+ */
public function getCredentials(Request $request)
{
// Check headers
$token = $request->headers->get('Authorization');
- if (!$token) {
- $this->logger->info('Token missing');
- return null;
- }
- if (0 !== strpos(strtolower($token), 'bearer ')) {
- $this->logger->info('Token malformed');
- return null;
- }
+
+ // Chop off the leading "bearer " from the token
$token = substr($token, 7);
$this->logger->debug("Token: $token");
@@ -72,65 +64,86 @@ public function getCredentials(Request $request)
$jwt = $this->jwtFactory->load($token);
} catch (InvalidArgumentException $exception) {
$this->logger->info('Invalid token. ' . $exception->getMessage());
- return null;
+ return [
+ 'token' => $token,
+ 'name' => null,
+ 'roles' => null,
+ ];
}
// Check correct properties
$payload = $jwt->getPayload();
+
+ return [
+ 'token' => $token,
+ 'jwt' => $jwt,
+ 'name' => $payload['sub'] ?? NULL,
+ 'roles' => $payload['roles'] ?? NULL,
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getUser($credentials, UserProviderInterface $userProvider)
+ {
+ return new JwtUser($credentials['name'], $credentials['roles']);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function checkCredentials($credentials, UserInterface $user)
+ {
+ if ($credentials['name'] === null) {
+ // No name means the token was invalid.
+ $this->logger->info("Token was invalid:");
+ return false;
+ }
+
+ // If this is a static token then no more verification needed
+ if ($credentials['jwt'] === null) {
+ $this->logger->info('Logged in with static token: ' . $credentials['name']);
+ return true;
+ }
+
+ $jwt = $credentials['jwt'];
+ $payload = $jwt->getPayload();
+ // Check and warn of all missing claims before rejecting.
+ $missing_claim = false;
if (!isset($payload['webid'])) {
$this->logger->info('Token missing webid');
- return null;
+ $missing_claim = true;
}
if (!isset($payload['iss'])) {
$this->logger->info('Token missing iss');
- return null;
+ $missing_claim = true;
}
if (!isset($payload['sub'])) {
$this->logger->info('Token missing sub');
- return null;
+ $missing_claim = true;
}
if (!isset($payload['roles'])) {
$this->logger->info('Token missing roles');
- return null;
+ $missing_claim = true;
}
if (!isset($payload['iat'])) {
$this->logger->info('Token missing iat');
- return null;
+ $missing_claim = true;
}
if (!isset($payload['exp'])) {
$this->logger->info('Token missing exp');
- return null;
+ $missing_claim = true;
+ }
+ if ($missing_claim) {
+ // If any claim is missing
+ return false;
}
-
if ($jwt->isExpired()) {
$this->logger->info('Token expired');
- return null;
- }
-
- return [
- 'token' => $token,
- 'jwt' => $jwt,
- 'name' => $payload['sub'],
- 'roles' => $payload['roles']
- ];
- }
-
- public function getUser($credentials, UserProviderInterface $userProvider)
- {
- $user = new JwtUser($credentials['name'], $credentials['roles']);
- return $user;
- }
-
- public function checkCredentials($credentials, UserInterface $user)
- {
- // If this is a static token then no more verification needed
- if ($credentials['jwt'] === null) {
- $this->logger->info('Logged in with static token: ' . $credentials['name']);
- return true;
+ return false;
}
- $jwt = $credentials['jwt'];
- $payload = $jwt->getPayload();
$url = $payload['iss'];
if (isset($this->sites[$url])) {
$site = $this->sites[$url];
@@ -144,12 +157,18 @@ public function checkCredentials($credentials, UserInterface $user)
return $jwt->isValid($site['key'], $site['algorithm']);
}
+ /**
+ * {@inheritdoc}
+ */
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
// on success, let the request continue
return null;
}
+ /**
+ * {@inheritdoc}
+ */
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
$data = array(
@@ -158,6 +177,9 @@ public function onAuthenticationFailure(Request $request, AuthenticationExceptio
return new JsonResponse($data, 403);
}
+ /**
+ * {@inheritdoc}
+ */
public function start(Request $request, AuthenticationException $authException = null)
{
$data = array(
@@ -166,8 +188,29 @@ public function start(Request $request, AuthenticationException $authException =
return new JsonResponse($data, 401);
}
+ /**
+ * {@inheritdoc}
+ */
public function supportsRememberMe()
{
return false;
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supports(Request $request)
+ {
+ // Check headers
+ $token = $request->headers->get('Authorization');
+ if (!$token) {
+ $this->logger->info('Token missing');
+ return false;
+ }
+ if (0 !== strpos(strtolower($token), 'bearer ')) {
+ $this->logger->info('Token malformed');
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/Syn/JwtFactory.php b/Syn/JwtFactory.php
similarity index 100%
rename from src/Syn/JwtFactory.php
rename to Syn/JwtFactory.php
diff --git a/src/Syn/JwtUser.php b/Syn/JwtUser.php
similarity index 100%
rename from src/Syn/JwtUser.php
rename to Syn/JwtUser.php
diff --git a/Syn/JwtUserProvider.php b/Syn/JwtUserProvider.php
new file mode 100644
index 0000000..d63586a
--- /dev/null
+++ b/Syn/JwtUserProvider.php
@@ -0,0 +1,42 @@
+getUsername(), $user->getRoles());
+ return $user;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supportsClass($class)
+ {
+ return JwtUser::class == $class;
+ }
+}
diff --git a/src/Syn/SettingsParser.php b/Syn/SettingsParser.php
similarity index 100%
rename from src/Syn/SettingsParser.php
rename to Syn/SettingsParser.php
diff --git a/Tests/AbstractCrayfishCommonsTestCase.php b/Tests/AbstractCrayfishCommonsTestCase.php
new file mode 100644
index 0000000..a0e2f38
--- /dev/null
+++ b/Tests/AbstractCrayfishCommonsTestCase.php
@@ -0,0 +1,22 @@
+logger = new Logger('crayfish-commons-tests');
+ $this->logger->pushHandler(new NullHandler());
+ }
+}
diff --git a/tests/ApixMiddlewareTest.php b/Tests/ApixMiddlewareTest.php
similarity index 60%
rename from tests/ApixMiddlewareTest.php
rename to Tests/ApixMiddlewareTest.php
index fa4afbe..41a1ebc 100644
--- a/tests/ApixMiddlewareTest.php
+++ b/Tests/ApixMiddlewareTest.php
@@ -1,23 +1,32 @@
prophesize(HttpKernelInterface::class);
+ $kernel = $prophecy->reveal();
+
// Mock a Fedora response.
$prophecy = $this->prophesize(ResponseInterface::class);
$prophecy->getBody()->willReturn();
@@ -31,14 +40,9 @@ public function testReturnsFedoraError()
$prophecy->getResource(Argument::any(), Argument::any())->willReturn($mock_fedora_response);
$mock_fedora_api = $prophecy->reveal();
- // Make a null logger.
- $log = new Logger('null');
- $handler = new NullHandler();
- $log->pushHandler($handler);
-
$middleware = new ApixMiddleware(
$mock_fedora_api,
- $log
+ $this->logger
);
// Create a Request.
@@ -49,8 +53,12 @@ public function testReturnsFedoraError()
$request->headers->set('Authorization', 'some_token');
$request->headers->set('Apix-Ldp-Resource', 'http://localhost:8080/fcrepo/rest/foo');
+ $request_event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
+
// Test before().
- $response = $middleware->before($request);
+ $middleware->before($request_event);
+
+ $response = $request_event->getResponse();
$this->assertTrue(
$response->getStatusCode() == 401,
@@ -62,21 +70,23 @@ public function testReturnsFedoraError()
);
}
+ /**
+ * @covers ::before
+ * @covers ::getFedoraResource
+ */
public function testReturns400IfNoApixLdpResourceHeader()
{
+ $prophecy = $this->prophesize(HttpKernelInterface::class);
+ $kernel = $prophecy->reveal();
+
// Mock a FedoraApi.
$prophecy = $this->prophesize(IFedoraApi::class);
$mock_fedora_api = $prophecy->reveal();
- // Make a null logger.
- $log = new Logger('null');
- $handler = new NullHandler();
- $log->pushHandler($handler);
-
// Make the middleware.
$middleware = new ApixMiddleware(
$mock_fedora_api,
- $log
+ $this->logger
);
// Create a Request.
@@ -85,12 +95,16 @@ public function testReturns400IfNoApixLdpResourceHeader()
"GET"
);
+ $request_event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
+
// Test before().
- $response = $middleware->before($request);
+ $middleware->before($request_event);
- $this->assertTrue(
- $response->getStatusCode() == 400,
- "Response code must be 400 if no ApixLdpResource header is present."
- );
+ $response = $request_event->getResponse();
+
+ $this->assertTrue(
+ $response->getStatusCode() == 400,
+ "Response code must be 400 if no ApixLdpResource header is present."
+ );
}
}
diff --git a/tests/CmdExecuteServiceTest.php b/Tests/CmdExecuteServiceTest.php
similarity index 72%
rename from tests/CmdExecuteServiceTest.php
rename to Tests/CmdExecuteServiceTest.php
index 03dffc6..6120657 100644
--- a/tests/CmdExecuteServiceTest.php
+++ b/Tests/CmdExecuteServiceTest.php
@@ -1,22 +1,15 @@
pushHandler(new NullHandler());
- $service = new CmdExecuteService($logger);
+ $service = new CmdExecuteService($this->logger);
$string = "apple\npear\nbanana";
$data = fopen('php://memory', 'r+');
@@ -39,14 +32,13 @@ public function testExecuteWithResource()
);
// Call the callback just to close the streams/process.
+ // This causes content to be printed to the test output.
$callback();
}
public function testExecuteWithoutResource()
{
- $logger = new Logger('test');
- $logger->pushHandler(new NullHandler());
- $service = new CmdExecuteService($logger);
+ $service = new CmdExecuteService($this->logger);
$command = 'echo "derp"';
$callback = $service->execute($command, "");
diff --git a/tests/EntityMapper/EntityMapperTest.php b/Tests/EntityMapper/EntityMapperTest.php
similarity index 87%
rename from tests/EntityMapper/EntityMapperTest.php
rename to Tests/EntityMapper/EntityMapperTest.php
index ed8f503..a0bfcc7 100644
--- a/tests/EntityMapper/EntityMapperTest.php
+++ b/Tests/EntityMapper/EntityMapperTest.php
@@ -1,15 +1,12 @@
simpleAuth = $this->getSimpleAuth();
+ }
+
+ private function getParser($site = null, $token = null)
{
if ($site === null) {
$site = [
@@ -38,93 +43,156 @@ public function getParser($site = null, $token = null)
return $prophet->reveal();
}
- public function getJwtFactory($jwt)
+ private function getJwtFactory($jwt, $fail = false)
{
$prophet = $this->prophesize(JwtFactory::class);
- $prophet->load(Argument::any())->willReturn($jwt);
+ if ($fail) {
+ $prophet->load(Argument::any())->willThrow(\InvalidArgumentException::class);
+ } else {
+ $prophet->load(Argument::any())->willReturn($jwt);
+ }
return $prophet->reveal();
}
- public function getUserProvider()
+ private function getUserProvider()
{
- $prophet = $this->prophesize(UserProviderInterface::class);
- return $prophet->reveal();
+ return new JwtUserProvider();
}
- public function getSimpleAuth()
+ private function getSimpleAuth($bad_token = false)
{
$jwt = $this->prophesize(SimpleJWS::class)->reveal();
$parser = $this->getParser();
- $jwtFactory = $this->getJwtFactory($jwt);
+ $jwtFactory = $this->getJwtFactory($jwt, $bad_token);
return new JwtAuthenticator($parser, $jwtFactory);
}
- public function testAuthenticationFailure()
+ /**
+ * Utility function to ensure the index does not exist in array or is null.
+ *
+ * @param array $array
+ * The credential array.
+ * @param string $index
+ * The associative array index.
+ *
+ * @return boolean
+ * Whether the index does not exist or is null.
+ */
+ private function unsetOrNull(array $array, $index)
{
- $auth = $this->getSimpleAuth();
+ return (!array_key_exists($index, $array) || is_null($array[$index]));
+ }
+
+ /**
+ * Compare a credential array against what we return for invalid creds.
+ *
+ * @param $credentials
+ * Array with credentials.
+ */
+ private function checkInvalidCredentials($credentials)
+ {
+ $this->assertTrue($this->unsetOrNull($credentials, 'name'));
+ $this->assertTrue($this->unsetOrNull($credentials, 'roles'));
+ $this->assertTrue($this->unsetOrNull($credentials, 'jwt'));
+ $this->assertFalse($this->unsetOrNull($credentials, 'token'));
+ }
+ public function testAuthenticationFailure()
+ {
$request = $this->prophesize(Request::class)->reveal();
$exception = $this->prophesize(AuthenticationException::class)->reveal();
- $response = $auth->onAuthenticationFailure($request, $exception);
+ $response = $this->simpleAuth->onAuthenticationFailure($request, $exception);
$this->assertEquals(403, $response->getStatusCode());
}
public function testAuthenticationStart()
{
- $auth = $this->getSimpleAuth();
-
$request = $this->prophesize(Request::class)->reveal();
$exception = $this->prophesize(AuthenticationException::class)->reveal();
- $response = $auth->start($request, $exception);
+ $response = $this->simpleAuth->start($request, $exception);
$this->assertEquals(401, $response->getStatusCode());
}
public function testAuthenticationSuccess()
{
- $auth = $this->getSimpleAuth();
-
$request = $this->prophesize(Request::class)->reveal();
$token = $this->prophesize(TokenInterface::class)->reveal();
- $response = $auth->onAuthenticationSuccess($request, $token, null);
+ $response = $this->simpleAuth->onAuthenticationSuccess($request, $token, null);
$this->assertNull($response);
}
public function testRememberMe()
{
- $auth = $this->getSimpleAuth();
- $this->assertFalse($auth->supportsRememberMe());
+ $this->assertFalse($this->simpleAuth->supportsRememberMe());
}
- public function headerHelper($request)
+ /**
+ * Get credential array from request.
+ *
+ * @param $request
+ * The request.
+ * @return array|mixed
+ * Array of token parts.
+ */
+ private function getCredsHelper($request)
{
- $auth = $this->getSimpleAuth();
- $credentials = $auth->getCredentials($request);
+ $credentials = $this->simpleAuth->getCredentials($request);
return $credentials;
}
+ /**
+ * Utility function to run the checkCredentials against submitted creds.
+ *
+ * @param $credentials
+ * Array of credentials.
+ * @return boolean
+ * Whether the user is authorized or not.
+ */
+ private function checkCredsHelper($credentials)
+ {
+ $authorized = $this->simpleAuth->checkCredentials(
+ $credentials,
+ new JwtUser($credentials['name'], $credentials['roles'])
+ );
+ return $authorized;
+ }
+
public function testNoHeader()
{
$request = new Request();
- $this->assertNull($this->headerHelper($request));
+ $this->assertFalse($this->simpleAuth->supports($request));
}
public function testHeaderNoBearer()
{
$request = new Request();
$request->headers->set("Authorization", "foo");
- $this->assertNull($this->headerHelper($request));
+ $this->assertFalse($this->simpleAuth->supports($request));
}
public function testHeaderBadToken()
{
$request = new Request();
$request->headers->set("Authorization", "Bearer foo");
- $this->assertNull($this->headerHelper($request));
+ $this->simpleAuth = $this->getSimpleAuth(true);
+ $creds = $this->getCredsHelper($request);
+ $this->checkInvalidCredentials($creds);
+ $this->assertFalse($this->checkCredsHelper($creds));
}
+ /**
+ * Takes an array of JWT parts and tries to authenticate against it.
+ *
+ * @param $data
+ * The array of JWT parameters.
+ * @param bool $expired
+ * Whether the JWT has expired or not.
+ * @return bool
+ * Whether the credentials authenticate or not.
+ */
public function headerTokenHelper($data, $expired = false)
{
$parser = $this->getParser();
@@ -133,11 +201,13 @@ public function headerTokenHelper($data, $expired = false)
$prophet = $this->prophesize(SimpleJWS::class);
$prophet->getPayload()->willReturn($data);
$prophet->isExpired()->willReturn($expired);
+ $prophet->isValid(Argument::any(), Argument::any())->willReturn(true);
$jwt = $prophet->reveal();
$jwtFactory = $this->getJwtFactory($jwt);
$auth = new JwtAuthenticator($parser, $jwtFactory);
$credentials = $auth->getCredentials($request);
- return $credentials;
+ $user = new JwtUser($credentials['name'], $credentials['roles']);
+ return $auth->checkCredentials($credentials, $user);
}
public function testHeaderTokenFields()
@@ -150,33 +220,33 @@ public function testHeaderTokenFields()
'iat' => 1,
'exp' => 1,
];
- $this->assertTrue(is_array($this->headerTokenHelper($data)));
+ $this->assertTrue($this->headerTokenHelper($data));
$missing = $data;
unset($missing['webid']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
$missing = $data;
unset($missing['iss']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
$missing = $data;
unset($missing['sub']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
$missing = $data;
unset($missing['roles']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
$missing = $data;
unset($missing['iat']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
$missing = $data;
unset($missing['exp']);
- $this->assertNull($this->headerTokenHelper($missing));
+ $this->assertFalse($this->headerTokenHelper($missing));
- $this->assertNull($this->headerTokenHelper($data, true));
+ $this->assertFalse($this->headerTokenHelper($data, true));
}
public function jwtAuthHelper($data, $parser, $valid = true)
diff --git a/tests/Syn/SettingsParserSiteTest.php b/Tests/Syn/SettingsParserSiteTest.php
similarity index 74%
rename from tests/Syn/SettingsParserSiteTest.php
rename to Tests/Syn/SettingsParserSiteTest.php
index cd3eab8..1c7bc7c 100644
--- a/tests/Syn/SettingsParserSiteTest.php
+++ b/Tests/Syn/SettingsParserSiteTest.php
@@ -1,18 +1,14 @@
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -37,8 +32,7 @@ public function hmacHelper($algorithm)
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(1, count($sites));
$this->assertTrue(isset($sites['http://test.com']));
@@ -63,8 +57,7 @@ public function testOneSiteHmacBase64()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(1, count($sites));
$this->assertTrue(isset($sites['http://test.com']));
@@ -82,8 +75,7 @@ public function testOneSiteHmacInvalidBase64()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -97,8 +89,7 @@ public function testOneSiteHmacInvalidEncoding()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -114,8 +105,7 @@ public function testOneSiteHmacFileKey()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(1, count($sites));
$this->assertTrue(isset($sites['http://test.com']));
@@ -132,8 +122,7 @@ public function testOneSiteHmacInvalidFileKey()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -145,8 +134,7 @@ public function testNoKeyOrPath()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -160,8 +148,7 @@ public function testNoUrl()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -175,8 +162,7 @@ public function testNoUrlDefault()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(1, count($sites));
}
@@ -190,8 +176,7 @@ public function testNoUrlNotDefault()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -210,8 +195,7 @@ public function rsaHelper($algorithm)
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(1, count($sites));
$this->assertTrue(isset($sites['http://test.com']));
@@ -235,8 +219,7 @@ public function testRsaNotRealKey()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -255,8 +238,7 @@ public function testRsaBadEncoding()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -265,8 +247,7 @@ public function testEmptyString()
{
$testXml = <<prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
@@ -276,8 +257,7 @@ public function testIncorrectTags()
$testXml = <<
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$sites = $parser->getSites();
$this->assertEquals(0, count($sites));
}
diff --git a/tests/Syn/SettingsParserTokenTest.php b/Tests/Syn/SettingsParserTokenTest.php
similarity index 73%
rename from tests/Syn/SettingsParserTokenTest.php
rename to Tests/Syn/SettingsParserTokenTest.php
index dce1d92..f4358ea 100644
--- a/tests/Syn/SettingsParserTokenTest.php
+++ b/Tests/Syn/SettingsParserTokenTest.php
@@ -1,17 +1,13 @@
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$tokens = $parser->getStaticTokens();
$this->assertEquals(0, count($tokens));
}
@@ -36,8 +31,7 @@ public function testTokenNoParams()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$tokens = $parser->getStaticTokens();
$this->assertEquals(1, count($tokens));
$this->assertTrue(isset($tokens['c00lpazzward']));
@@ -56,8 +50,7 @@ public function testTokenUser()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$tokens = $parser->getStaticTokens();
$this->assertEquals(1, count($tokens));
$this->assertTrue(isset($tokens['c00lpazzward']));
@@ -75,8 +68,7 @@ public function testTokenRole()
STRING;
- $logger = $this->prophesize(AbstractLogger::class)->reveal();
- $parser = new SettingsParser($testXml, $logger);
+ $parser = new SettingsParser($testXml, $this->logger);
$tokens = $parser->getStaticTokens();
$this->assertEquals(1, count($tokens));
$this->assertTrue(isset($tokens['c00lpazzward']));
diff --git a/composer.json b/composer.json
index ad73a60..d13d781 100644
--- a/composer.json
+++ b/composer.json
@@ -1,45 +1,55 @@
{
"name": "islandora/crayfish-commons",
"description": "Shared code amongst Islandora Crayfish microservices",
- "type": "library",
+ "type": "symfony-bundle",
"homepage": "https://github.com/Islandora/Crayfish-Commons",
"support": {
"issues": "https://github.com/Islandora/documentation/issues"
},
"require": {
- "doctrine/dbal": "~2.2",
- "islandora/chullo": "^1",
- "monolog/monolog": "^1.22",
- "namshi/jose": "^7.2",
- "pimple/pimple": "~3.0",
+ "islandora/chullo": "^1.0",
"psr/log": "^1.0.1",
- "silex/silex": "^2.0",
- "symfony/http-foundation": "^3.4 || ^4.4",
- "symfony/security": "^3.4 || ^4.4",
- "symfony/yaml": "^3.4 || ^4.4"
+ "namshi/jose": "^7.2",
+ "symfony/monolog-bundle": "^3.4",
+ "symfony/http-foundation": "4.4.*",
+ "symfony/config": "4.4.*",
+ "symfony/dependency-injection": "4.4.*",
+ "symfony/event-dispatcher": "4.4.*",
+ "symfony/yaml": "4.4.*",
+ "symfony/security-bundle": "4.4.*"
},
"require-dev": {
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^9.0",
"phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5",
"sebastian/phpcpd": "^6.0",
- "squizlabs/php_codesniffer": "^3.0"
+ "squizlabs/php_codesniffer": "^3.0",
+ "mikey179/vfsstream": "^1.6",
+ "symfony/phpunit-bridge": "4.4.*"
},
"autoload": {
"psr-4": {
- "Islandora\\Crayfish\\Commons\\": "src/"
+ "Islandora\\Crayfish\\Commons\\": ""
}
},
"scripts": {
"check": [
- "vendor/bin/phpcs --standard=PSR2 src tests",
- "vendor/bin/phpcpd --suffix *.php src tests"
+ "./vendor/bin/phpcs --standard=PSR2 --extensions=php --ignore=\"vendor/\" .",
+ "./vendor/bin/phpcpd --suffix *.php --exclude vendor . "
],
"test": [
"@check",
- "vendor/bin/phpunit"
+ "php ./vendor/bin/simple-phpunit"
]
},
+ "conflict": {
+ "symfony/symfony": "*"
+ },
+ "extra": {
+ "symfony": {
+ "allow-contrib": false,
+ "require": "4.4.*"
+ }
+ },
"license": "MIT",
"authors": [
{
diff --git a/composer.lock b/composer.lock
index 6d48e7d..4fa5871 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,352 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "78f0710c3f0e1f76dfe9357f7bb945df",
+ "content-hash": "cb135e6d413d7e49be0fe4d822ba4ada",
"packages": [
- {
- "name": "doctrine/cache",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "ac77408b22cc6c4d0b4947d20a3889be3043566e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/ac77408b22cc6c4d0b4947d20a3889be3043566e",
- "reference": "ac77408b22cc6c4d0b4947d20a3889be3043566e",
- "shasum": ""
- },
- "require": {
- "php": "~7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "cache/integration-tests": "dev-master",
- "doctrine/coding-standard": "^8.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "predis/predis": "~1.0",
- "psr/cache": "^1.0 || ^2.0 || ^3.0",
- "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
- "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "support": {
- "issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/2.1.0"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
- "type": "tidelift"
- }
- ],
- "time": "2021-07-14T11:22:57+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "2.13.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4",
- "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.0|^2.0",
- "doctrine/deprecations": "^0.5.3",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.1 || ^8"
- },
- "require-dev": {
- "doctrine/coding-standard": "9.0.0",
- "jetbrains/phpstorm-stubs": "2020.2",
- "phpstan/phpstan": "0.12.81",
- "phpunit/phpunit": "^7.5.20|^8.5|9.5.5",
- "squizlabs/php_codesniffer": "3.6.0",
- "symfony/cache": "^4.4",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
- "vimeo/psalm": "4.6.4"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlanywhere",
- "sqlite",
- "sqlserver",
- "sqlsrv"
- ],
- "support": {
- "issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/2.13.2"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
- "type": "tidelift"
- }
- ],
- "time": "2021-06-18T21:48:39+00:00"
- },
- {
- "name": "doctrine/deprecations",
- "version": "v0.5.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/deprecations.git",
- "reference": "9504165960a1f83cc1480e2be1dd0a0478561314"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314",
- "reference": "9504165960a1f83cc1480e2be1dd0a0478561314",
- "shasum": ""
- },
- "require": {
- "php": "^7.1|^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0|^7.0|^8.0",
- "phpunit/phpunit": "^7.0|^8.0|^9.0",
- "psr/log": "^1.0"
- },
- "suggest": {
- "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
- "homepage": "https://www.doctrine-project.org/",
- "support": {
- "issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v0.5.3"
- },
- "time": "2021-03-21T12:59:47+00:00"
- },
- {
- "name": "doctrine/event-manager",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
- "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
- ],
- "support": {
- "issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/1.1.x"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-29T18:28:51+00:00"
- },
{
"name": "easyrdf/easyrdf",
"version": "1.1.1",
@@ -498,16 +154,16 @@
},
{
"name": "guzzlehttp/promises",
- "version": "1.4.1",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
- "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"shasum": ""
},
"require": {
@@ -519,7 +175,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "1.5-dev"
}
},
"autoload": {
@@ -535,10 +191,25 @@
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle promises library",
@@ -547,22 +218,36 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.4.1"
+ "source": "https://github.com/guzzle/promises/tree/1.5.1"
},
- "time": "2021-03-07T09:25:29+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-22T20:56:57+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.8.2",
+ "version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
- "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"shasum": ""
},
"require": {
@@ -599,13 +284,34 @@
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
{
"name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
}
],
@@ -622,13 +328,27 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.8.2"
+ "source": "https://github.com/guzzle/psr7/tree/1.8.3"
},
- "time": "2021-04-26T09:17:50+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-05T13:56:00+00:00"
},
{
"name": "islandora/chullo",
- "version": "dev-dev",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/Islandora/chullo.git",
@@ -652,7 +372,6 @@
"sebastian/phpcpd": "^6.0",
"squizlabs/php_codesniffer": "^3.0"
},
- "default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
@@ -794,51 +513,64 @@
},
{
"name": "monolog/monolog",
- "version": "1.26.1",
+ "version": "2.3.5",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5"
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9",
"shasum": ""
},
"require": {
- "php": ">=5.3.0",
- "psr/log": "~1.0"
+ "php": ">=7.2",
+ "psr/log": "^1.0.1 || ^2.0 || ^3.0"
},
"provide": {
- "psr/log-implementation": "1.0.0"
+ "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
- "graylog2/gelf-php": "~1.0",
- "php-amqplib/php-amqplib": "~2.4",
+ "elasticsearch/elasticsearch": "^7",
+ "graylog2/gelf-php": "^1.4.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.3",
- "phpstan/phpstan": "^0.12.59",
- "phpunit/phpunit": "~4.5",
- "ruflin/elastica": ">=0.90 <3.0",
- "sentry/sentry": "^0.13",
+ "phpspec/prophecy": "^1.6.1",
+ "phpstan/phpstan": "^0.12.91",
+ "phpunit/phpunit": "^8.5",
+ "predis/predis": "^1.1",
+ "rollbar/rollbar": "^1.3",
+ "ruflin/elastica": ">=0.90@dev",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
- "sentry/sentry": "Allow sending log messages to a Sentry server"
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
@@ -852,11 +584,11 @@
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "homepage": "https://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "http://github.com/Seldaek/monolog",
+ "homepage": "https://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
@@ -864,7 +596,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/1.26.1"
+ "source": "https://github.com/Seldaek/monolog/tree/2.3.5"
},
"funding": [
{
@@ -876,7 +608,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-28T08:32:12+00:00"
+ "time": "2021-10-01T21:08:31+00:00"
},
{
"name": "namshi/jose",
@@ -946,74 +678,21 @@
"time": "2016-12-05T07:27:31+00:00"
},
{
- "name": "pimple/pimple",
- "version": "v3.4.0",
+ "name": "psr/container",
+ "version": "1.1.1",
"source": {
"type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "86406047271859ffc13424a048541f4531f53601"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601",
- "reference": "86406047271859ffc13424a048541f4531f53601",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.4.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple, a simple Dependency Injection Container",
- "homepage": "https://pimple.symfony.com",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "support": {
- "source": "https://github.com/silexphp/Pimple/tree/v3.4.0"
- },
- "time": "2021-03-06T08:28:00+00:00"
- },
- {
- "name": "psr/container",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.0"
+ "php": ">=7.2.0"
},
"type": "library",
"autoload": {
@@ -1194,69 +873,47 @@
"time": "2019-03-08T08:55:37+00:00"
},
{
- "name": "silex/silex",
- "version": "v2.3.0",
+ "name": "symfony/config",
+ "version": "v4.4.33",
"source": {
"type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
+ "url": "https://github.com/symfony/config.git",
+ "reference": "25c11934bf20c1633f3f125fed0bd7e29f5d8f24"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
- "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
+ "url": "https://api.github.com/repos/symfony/config/zipball/25c11934bf20c1633f3f125fed0bd7e29f5d8f24",
+ "reference": "25c11934bf20c1633f3f125fed0bd7e29f5d8f24",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "pimple/pimple": "^3.0",
- "symfony/event-dispatcher": "^4.0",
- "symfony/http-foundation": "^4.0",
- "symfony/http-kernel": "^4.0",
- "symfony/routing": "^4.0"
+ "symfony/filesystem": "^3.4|^4.0|^5.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php81": "^1.22"
},
- "replace": {
- "silex/api": "self.version",
- "silex/providers": "self.version"
+ "conflict": {
+ "symfony/finder": "<3.4"
},
"require-dev": {
- "doctrine/dbal": "^2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "^5",
- "symfony/asset": "^4.0",
- "symfony/browser-kit": "^4.0",
- "symfony/config": "^4.0",
- "symfony/css-selector": "^4.0",
- "symfony/debug": "^4.0",
- "symfony/doctrine-bridge": "^4.0",
- "symfony/dom-crawler": "^4.0",
- "symfony/expression-language": "^4.0",
- "symfony/finder": "^4.0",
- "symfony/form": "^4.0",
- "symfony/intl": "^4.0",
- "symfony/monolog-bridge": "^4.0",
- "symfony/options-resolver": "^4.0",
- "symfony/phpunit-bridge": "^3.2",
- "symfony/process": "^4.0",
- "symfony/security": "^4.0",
- "symfony/serializer": "^4.0",
- "symfony/translation": "^4.0",
- "symfony/twig-bridge": "^4.0",
- "symfony/validator": "^4.0",
- "symfony/var-dumper": "^4.0",
- "symfony/web-link": "^4.0",
- "twig/twig": "^2.0"
+ "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+ "symfony/finder": "^3.4|^4.0|^5.0",
+ "symfony/messenger": "^4.1|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/yaml": "^3.4|^4.0|^5.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Silex\\": "src/Silex"
- }
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1268,40 +925,48 @@
"email": "fabien@symfony.com"
},
{
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org",
- "keywords": [
- "microframework"
- ],
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+ "homepage": "https://symfony.com",
"support": {
- "issues": "https://github.com/silexphp/Silex/issues",
- "source": "https://github.com/silexphp/Silex/tree/v2.3.0"
+ "source": "https://github.com/symfony/config/tree/v4.4.33"
},
- "abandoned": "symfony/flex",
- "time": "2018-04-20T05:17:01+00:00"
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-19T15:09:42+00:00"
},
{
"name": "symfony/debug",
- "version": "v4.4.25",
+ "version": "v4.4.31",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f"
+ "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f",
- "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0",
+ "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "psr/log": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "psr/log": "^1|^2|^3"
},
"conflict": {
"symfony/http-kernel": "<3.4"
@@ -1335,7 +1000,93 @@
"description": "Provides tools to ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/debug/tree/v4.4.25"
+ "source": "https://github.com/symfony/debug/tree/v4.4.31"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-24T13:30:14+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v4.4.33",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad364e599a4059db29c0aa424537e6ba668f54e6",
+ "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "psr/container": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/config": "<4.3|>=5.0",
+ "symfony/finder": "<3.4",
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0",
+ "symfony/service-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "symfony/config": "^4.3",
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dependency-injection/tree/v4.4.33"
},
"funding": [
{
@@ -1351,7 +1102,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:39:37+00:00"
+ "time": "2021-10-17T07:04:24+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -1422,23 +1173,22 @@
},
{
"name": "symfony/error-handler",
- "version": "v4.4.26",
+ "version": "v4.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "4001f01153d0eb5496fe11d8c76d1e56b47fdb88"
+ "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/4001f01153d0eb5496fe11d8c76d1e56b47fdb88",
- "reference": "4001f01153d0eb5496fe11d8c76d1e56b47fdb88",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5",
+ "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "psr/log": "~1.0",
+ "psr/log": "^1|^2|^3",
"symfony/debug": "^4.4.5",
- "symfony/polyfill-php80": "^1.15",
"symfony/var-dumper": "^4.4|^5.0"
},
"require-dev": {
@@ -1471,7 +1221,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v4.4.26"
+ "source": "https://github.com/symfony/error-handler/tree/v4.4.30"
},
"funding": [
{
@@ -1487,25 +1237,26 @@
"type": "tidelift"
}
],
- "time": "2021-06-24T07:57:22+00:00"
+ "time": "2021-08-27T17:42:48+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v4.4.25",
+ "version": "v4.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f"
+ "reference": "2fe81680070043c4c80e7cedceb797e34f377bac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f",
- "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2fe81680070043c4c80e7cedceb797e34f377bac",
+ "reference": "2fe81680070043c4c80e7cedceb797e34f377bac",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "symfony/event-dispatcher-contracts": "^1.1"
+ "symfony/event-dispatcher-contracts": "^1.1",
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"symfony/dependency-injection": "<3.4"
@@ -1515,7 +1266,7 @@
"symfony/event-dispatcher-implementation": "1.1"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2|^3",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/error-handler": "~3.4|~4.4",
@@ -1554,7 +1305,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.30"
},
"funding": [
{
@@ -1570,7 +1321,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:39:37+00:00"
+ "time": "2021-08-04T20:31:23+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -1651,6 +1402,69 @@
],
"time": "2020-07-06T13:19:58+00:00"
},
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32",
+ "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v5.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-21T12:40:44+00:00"
+ },
{
"name": "symfony/http-client-contracts",
"version": "v2.4.0",
@@ -1731,23 +1545,23 @@
},
{
"name": "symfony/http-foundation",
- "version": "v4.4.26",
+ "version": "v4.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b"
+ "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b",
- "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9a91102f548e0111f4996e8c622fb1d1d479850",
+ "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
"symfony/mime": "^4.3|^5.0",
"symfony/polyfill-mbstring": "~1.1",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"predis/predis": "~1.0",
@@ -1779,7 +1593,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v4.4.26"
+ "source": "https://github.com/symfony/http-foundation/tree/v4.4.33"
},
"funding": [
{
@@ -1795,32 +1609,32 @@
"type": "tidelift"
}
],
- "time": "2021-06-26T21:56:04+00:00"
+ "time": "2021-10-07T15:31:35+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v4.4.26",
+ "version": "v4.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "e08b2fb8a6eedd81c70522e514bad9b2c1fff881"
+ "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e08b2fb8a6eedd81c70522e514bad9b2c1fff881",
- "reference": "e08b2fb8a6eedd81c70522e514bad9b2c1fff881",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6f1fcca1154f782796549f4f4e5090bae9525c0e",
+ "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "psr/log": "~1.0",
+ "psr/log": "^1|^2",
"symfony/error-handler": "^4.4",
"symfony/event-dispatcher": "^4.4",
"symfony/http-client-contracts": "^1.1|^2",
- "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4.30|^5.3.7",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"symfony/browser-kit": "<4.3",
@@ -1831,7 +1645,7 @@
"twig/twig": "<1.43|<2.13,>=2"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
@@ -1883,7 +1697,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v4.4.26"
+ "source": "https://github.com/symfony/http-kernel/tree/v4.4.33"
},
"funding": [
{
@@ -1899,20 +1713,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-30T08:18:06+00:00"
+ "time": "2021-10-29T08:14:01+00:00"
},
{
"name": "symfony/mime",
- "version": "v5.3.2",
+ "version": "v5.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a"
+ "reference": "a756033d0a7e53db389618653ae991eba5a19a11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a",
- "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11",
+ "reference": "a756033d0a7e53db389618653ae991eba5a19a11",
"shasum": ""
},
"require": {
@@ -1920,7 +1734,7 @@
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"egulias/email-validator": "~3.0.0",
@@ -1966,7 +1780,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v5.3.2"
+ "source": "https://github.com/symfony/mime/tree/v5.3.8"
},
"funding": [
{
@@ -1982,44 +1796,54 @@
"type": "tidelift"
}
],
- "time": "2021-06-09T10:58:01+00:00"
+ "time": "2021-09-10T12:30:38+00:00"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.23.0",
+ "name": "symfony/monolog-bridge",
+ "version": "v5.2.12",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ "url": "https://github.com/symfony/monolog-bridge.git",
+ "reference": "2c3943d7c0100983f9c0a82807555273353e3539"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/2c3943d7c0100983f9c0a82807555273353e3539",
+ "reference": "2c3943d7c0100983f9c0a82807555273353e3539",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "monolog/monolog": "^1.25.1|^2",
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2"
},
- "suggest": {
- "ext-ctype": "For best performance"
+ "conflict": {
+ "symfony/console": "<4.4",
+ "symfony/http-foundation": "<4.4"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "require-dev": {
+ "symfony/console": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/mailer": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/security-core": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.",
+ "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
+ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler."
},
+ "type": "symfony-bridge",
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
+ "Symfony\\Bridge\\Monolog\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2028,24 +1852,18 @@
],
"authors": [
{
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for ctype functions",
+ "description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ "source": "https://github.com/symfony/monolog-bridge/tree/v5.2.12"
},
"funding": [
{
@@ -2061,45 +1879,205 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-07-23T15:54:19+00:00"
},
{
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.0",
+ "name": "symfony/monolog-bundle",
+ "version": "v3.7.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4",
+ "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "monolog/monolog": "~1.22 || ~2.0",
+ "php": ">=7.1.3",
+ "symfony/config": "~4.4 || ^5.0",
+ "symfony/dependency-injection": "^4.4 || ^5.0",
+ "symfony/http-kernel": "~4.4 || ^5.0",
+ "symfony/monolog-bridge": "~4.4 || ^5.0"
},
- "suggest": {
- "ext-intl": "For best performance"
+ "require-dev": {
+ "symfony/console": "~4.4 || ^5.0",
+ "symfony/phpunit-bridge": "^5.1",
+ "symfony/yaml": "~4.4 || ^5.0"
},
- "type": "library",
+ "type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ "Symfony\\Bundle\\MonologBundle\\": ""
},
- "files": [
- "bootstrap.php"
- ]
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/monolog-bundle/issues",
+ "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-03-31T07:20:47+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2126,7 +2104,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
},
"funding": [
{
@@ -2142,7 +2120,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
@@ -2317,16 +2295,16 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1"
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": ""
},
"require": {
@@ -2377,7 +2355,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
},
"funding": [
{
@@ -2393,7 +2371,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:27:20+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-php56",
@@ -2556,25 +2534,356 @@
"require": {
"php": ">=7.1"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-28T13:41:28+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-21T13:25:03+00:00"
+ },
+ {
+ "name": "symfony/property-access",
+ "version": "v5.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66",
+ "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/property-info": "^5.2"
+ },
+ "require-dev": {
+ "symfony/cache": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To cache access methods."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides functions to read and write from/to an object or array using a simple string notation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-access/tree/v5.3.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-10T11:55:24+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v5.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "39de5bed8c036f76ec0457ec52908e45d5497947"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/39de5bed8c036f76ec0457ec52908e45d5497947",
+ "reference": "39de5bed8c036f76ec0457ec52908e45d5497947",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.10.4",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/serializer": "^4.4|^5.0"
+ },
+ "suggest": {
+ "phpdocumentor/reflection-docblock": "To use the PHPDoc",
+ "psr/cache-implementation": "To cache results",
+ "symfony/doctrine-bridge": "To use Doctrine metadata",
+ "symfony/serializer": "To use Serializer metadata"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
+ "Symfony\\Component\\PropertyInfo\\": ""
},
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2583,24 +2892,26 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "description": "Extracts information about PHP class' properties using metadata of popular sources",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ "source": "https://github.com/symfony/property-info/tree/v5.3.8"
},
"funding": [
{
@@ -2616,44 +2927,67 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-09-07T07:41:40+00:00"
},
{
- "name": "symfony/polyfill-php80",
- "version": "v1.23.0",
+ "name": "symfony/security-bundle",
+ "version": "v4.4.27",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
+ "url": "https://github.com/symfony/security-bundle.git",
+ "reference": "49a09063f633d059b34d53c47adee7144c883bbe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/49a09063f633d059b34d53c47adee7144c883bbe",
+ "reference": "49a09063f633d059b34d53c47adee7144c883bbe",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-xml": "*",
+ "php": ">=7.1.3",
+ "symfony/config": "^4.2|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/security-core": "^4.4",
+ "symfony/security-csrf": "^4.2|^5.0",
+ "symfony/security-guard": "^4.2|^5.0",
+ "symfony/security-http": "^4.4.5"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "conflict": {
+ "symfony/browser-kit": "<4.2",
+ "symfony/console": "<3.4",
+ "symfony/framework-bundle": "<4.4",
+ "symfony/ldap": "<4.4",
+ "symfony/twig-bundle": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.10.4",
+ "symfony/asset": "^3.4|^4.0|^5.0",
+ "symfony/browser-kit": "^4.2|^5.0",
+ "symfony/console": "^3.4|^4.0|^5.0",
+ "symfony/css-selector": "^3.4|^4.0|^5.0",
+ "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
+ "symfony/form": "^3.4|^4.0|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/process": "^3.4|^4.0|^5.0",
+ "symfony/serializer": "^4.4|^5.0",
+ "symfony/translation": "^3.4|^4.0|^5.0",
+ "symfony/twig-bridge": "^3.4|^4.0|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "symfony/validator": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^3.4|^4.0|^5.0",
+ "twig/twig": "^1.43|^2.13|^3.0.4"
},
+ "type": "symfony-bundle",
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
+ "Symfony\\Bundle\\SecurityBundle\\": ""
},
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2662,28 +2996,18 @@
],
"authors": [
{
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
+ "source": "https://github.com/symfony/security-bundle/tree/v4.4.27"
},
"funding": [
{
@@ -2699,38 +3023,55 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-07-24T09:09:34+00:00"
},
{
- "name": "symfony/property-access",
- "version": "v5.3.0",
+ "name": "symfony/security-core",
+ "version": "v4.4.33",
"source": {
"type": "git",
- "url": "https://github.com/symfony/property-access.git",
- "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb"
+ "url": "https://github.com/symfony/security-core.git",
+ "reference": "8c89331d8d22b585652d0217de2dd0f423c2c980"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/8988399a556cffb0fba9bb3603f8d1ba4543eceb",
- "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/8c89331d8d22b585652d0217de2dd0f423c2c980",
+ "reference": "8c89331d8d22b585652d0217de2dd0f423c2c980",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15",
- "symfony/property-info": "^5.2"
+ "php": ">=7.1.3",
+ "symfony/event-dispatcher-contracts": "^1.1|^2",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/event-dispatcher": "<4.3|>=5",
+ "symfony/ldap": "<4.4",
+ "symfony/security-guard": "<4.3"
},
"require-dev": {
- "symfony/cache": "^4.4|^5.0"
+ "psr/container": "^1.0|^2.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
+ "symfony/http-foundation": "^3.4|^4.0|^5.0",
+ "symfony/ldap": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/validator": "^3.4.31|^4.3.4|^5.0"
},
"suggest": {
- "psr/cache-implementation": "To cache access methods."
+ "psr/container-implementation": "To instantiate the Security class",
+ "symfony/event-dispatcher": "",
+ "symfony/expression-language": "For using the expression voter",
+ "symfony/http-foundation": "",
+ "symfony/ldap": "For using LDAP integration",
+ "symfony/validator": "For using the user password constraint"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\PropertyAccess\\": ""
+ "Symfony\\Component\\Security\\Core\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2750,21 +3091,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides functions to read and write from/to an object or array using a simple string notation",
+ "description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
- "keywords": [
- "access",
- "array",
- "extraction",
- "index",
- "injection",
- "object",
- "property",
- "property path",
- "reflection"
- ],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v5.3.0"
+ "source": "https://github.com/symfony/security-core/tree/v4.4.33"
},
"funding": [
{
@@ -2780,50 +3110,40 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2021-10-23T07:49:03+00:00"
},
{
- "name": "symfony/property-info",
- "version": "v5.3.1",
+ "name": "symfony/security-csrf",
+ "version": "v5.2.12",
"source": {
"type": "git",
- "url": "https://github.com/symfony/property-info.git",
- "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf"
+ "url": "https://github.com/symfony/security-csrf.git",
+ "reference": "f0af6689451582e55f6b3439362e72e536e916e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/6f8bff281f215dbf41929c7ec6f8309cdc0912cf",
- "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/f0af6689451582e55f6b3439362e72e536e916e4",
+ "reference": "f0af6689451582e55f6b3439362e72e536e916e4",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15",
- "symfony/string": "^5.1"
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/security-core": "^4.4|^5.0"
},
"conflict": {
- "phpdocumentor/reflection-docblock": "<3.2.2",
- "phpdocumentor/type-resolver": "<1.4.0",
- "symfony/dependency-injection": "<4.4"
+ "symfony/http-foundation": "<4.4"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
- "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/cache": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/http-foundation": "^4.4|^5.0"
},
"suggest": {
- "phpdocumentor/reflection-docblock": "To use the PHPDoc",
- "psr/cache-implementation": "To cache results",
- "symfony/doctrine-bridge": "To use Doctrine metadata",
- "symfony/serializer": "To use Serializer metadata"
+ "symfony/http-foundation": "For using the class SessionTokenStorage."
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\PropertyInfo\\": ""
+ "Symfony\\Component\\Security\\Csrf\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2835,26 +3155,18 @@
],
"authors": [
{
- "name": "Kévin Dunglas",
- "email": "dunglas@gmail.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Extracts information about PHP class' properties using metadata of popular sources",
+ "description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
- "keywords": [
- "doctrine",
- "phpdoc",
- "property",
- "symfony",
- "type",
- "validator"
- ],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v5.3.1"
+ "source": "https://github.com/symfony/security-csrf/tree/v5.2.12"
},
"funding": [
{
@@ -2870,50 +3182,34 @@
"type": "tidelift"
}
],
- "time": "2021-05-31T12:40:48+00:00"
+ "time": "2021-07-21T12:38:00+00:00"
},
{
- "name": "symfony/routing",
- "version": "v4.4.25",
+ "name": "symfony/security-guard",
+ "version": "v4.4.27",
"source": {
"type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434"
+ "url": "https://github.com/symfony/security-guard.git",
+ "reference": "68d4be4fe90f4eccbbf379d478f2067550a25469"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434",
- "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434",
+ "url": "https://api.github.com/repos/symfony/security-guard/zipball/68d4be4fe90f4eccbbf379d478f2067550a25469",
+ "reference": "68d4be4fe90f4eccbbf379d478f2067550a25469",
"shasum": ""
},
"require": {
- "php": ">=7.1.3"
- },
- "conflict": {
- "symfony/config": "<4.2",
- "symfony/dependency-injection": "<3.4",
- "symfony/yaml": "<3.4"
+ "php": ">=7.1.3",
+ "symfony/security-core": "^3.4.22|^4.2.3|^5.0",
+ "symfony/security-http": "^4.4.1"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
- "psr/log": "~1.0",
- "symfony/config": "^4.2|^5.0",
- "symfony/dependency-injection": "^3.4|^4.0|^5.0",
- "symfony/expression-language": "^3.4|^4.0|^5.0",
- "symfony/http-foundation": "^3.4|^4.0|^5.0",
- "symfony/yaml": "^3.4|^4.0|^5.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
+ "psr/log": "^1|^2|^3"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Routing\\": ""
+ "Symfony\\Component\\Security\\Guard\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2933,16 +3229,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Maps an HTTP request to a set of configuration variables",
+ "description": "Symfony Security Component - Guard",
"homepage": "https://symfony.com",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
"support": {
- "source": "https://github.com/symfony/routing/tree/v4.4.25"
+ "source": "https://github.com/symfony/security-guard/tree/v4.4.27"
},
"funding": [
{
@@ -2958,70 +3248,50 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:39:37+00:00"
+ "time": "2021-07-18T14:08:08+00:00"
},
{
- "name": "symfony/security",
- "version": "v4.4.26",
+ "name": "symfony/security-http",
+ "version": "v4.4.30",
"source": {
"type": "git",
- "url": "https://github.com/symfony/security.git",
- "reference": "64b34827d764ef3cd2c86f3f6a3c56742efbfde5"
+ "url": "https://github.com/symfony/security-http.git",
+ "reference": "ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security/zipball/64b34827d764ef3cd2c86f3f6a3c56742efbfde5",
- "reference": "64b34827d764ef3cd2c86f3f6a3c56742efbfde5",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b",
+ "reference": "ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "symfony/event-dispatcher-contracts": "^1.1|^2",
"symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7",
"symfony/http-kernel": "^4.4",
+ "symfony/polyfill-php80": "^1.16",
"symfony/property-access": "^3.4|^4.0|^5.0",
- "symfony/service-contracts": "^1.1|^2"
+ "symfony/security-core": "^4.4.8"
},
"conflict": {
"symfony/event-dispatcher": ">=5",
- "symfony/ldap": "<4.4"
- },
- "replace": {
- "symfony/security-core": "self.version",
- "symfony/security-csrf": "self.version",
- "symfony/security-guard": "self.version",
- "symfony/security-http": "self.version"
+ "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11"
},
"require-dev": {
- "psr/container": "^1.0|^2.0",
- "psr/log": "~1.0",
- "symfony/expression-language": "^3.4|^4.0|^5.0",
- "symfony/finder": "^3.4|^4.0|^5.0",
- "symfony/ldap": "^4.4|^5.0",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-icu": "~1.0",
+ "psr/log": "^1|^2|^3",
"symfony/routing": "^3.4|^4.0|^5.0",
- "symfony/translation": "^4.4|^5.0",
- "symfony/validator": "^3.4.31|^4.3.4|^5.0"
+ "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0"
},
"suggest": {
- "psr/container-implementation": "To instantiate the Security class",
- "symfony/expression-language": "For using the expression voter",
- "symfony/form": "",
- "symfony/ldap": "For using the LDAP user and authentication providers",
"symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs",
- "symfony/validator": "For using the user password constraint"
+ "symfony/security-csrf": "For using tokens to protect authentication/logout attempts"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Security\\": ""
+ "Symfony\\Component\\Security\\Http\\": ""
},
"exclude-from-classmap": [
- "/Core/Tests/",
- "/Csrf/Tests/",
- "/Guard/Tests/",
- "/Http/Tests/"
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -3038,10 +3308,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides a complete security system for your web application",
+ "description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security/tree/v4.4.26"
+ "source": "https://github.com/symfony/security-http/tree/v4.4.30"
},
"funding": [
{
@@ -3057,7 +3327,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-23T21:43:12+00:00"
+ "time": "2021-08-18T09:30:30+00:00"
},
{
"name": "symfony/service-contracts",
@@ -3140,16 +3410,16 @@
},
{
"name": "symfony/string",
- "version": "v5.3.3",
+ "version": "v5.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
+ "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
- "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
+ "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
+ "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
"shasum": ""
},
"require": {
@@ -3203,7 +3473,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.3.3"
+ "source": "https://github.com/symfony/string/tree/v5.3.10"
},
"funding": [
{
@@ -3219,26 +3489,26 @@
"type": "tidelift"
}
],
- "time": "2021-06-27T11:44:38+00:00"
+ "time": "2021-10-27T18:21:46+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.3.3",
+ "version": "v5.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "46aa709affb9ad3355bd7a810f9662d71025c384"
+ "reference": "875432adb5f5570fff21036fd22aee244636b7d1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46aa709affb9ad3355bd7a810f9662d71025c384",
- "reference": "46aa709affb9ad3355bd7a810f9662d71025c384",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1",
+ "reference": "875432adb5f5570fff21036fd22aee244636b7d1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"phpunit/phpunit": "<5.4.3",
@@ -3291,7 +3561,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.3.3"
+ "source": "https://github.com/symfony/var-dumper/tree/v5.3.10"
},
"funding": [
{
@@ -3307,20 +3577,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-24T08:13:00+00:00"
+ "time": "2021-10-26T09:30:15+00:00"
},
{
"name": "symfony/yaml",
- "version": "v4.4.26",
+ "version": "v4.4.29",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8"
+ "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8",
- "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/3abcc4db06d4e776825eaa3ed8ad924d5bc7432a",
+ "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a",
"shasum": ""
},
"require": {
@@ -3362,7 +3632,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v4.4.26"
+ "source": "https://github.com/symfony/yaml/tree/v4.4.29"
},
"funding": [
{
@@ -3378,7 +3648,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-23T19:06:53+00:00"
+ "time": "2021-07-27T16:19:30+00:00"
}
],
"packages-dev": [
@@ -3453,16 +3723,16 @@
},
{
"name": "mikey179/vfsstream",
- "version": "v1.6.8",
+ "version": "v1.6.10",
"source": {
"type": "git",
"url": "https://github.com/bovigo/vfsStream.git",
- "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe"
+ "reference": "250c0825537d501e327df879fb3d4cd751933b85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/231c73783ebb7dd9ec77916c10037eff5a2b6efe",
- "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe",
+ "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/250c0825537d501e327df879fb3d4cd751933b85",
+ "reference": "250c0825537d501e327df879fb3d4cd751933b85",
"shasum": ""
},
"require": {
@@ -3500,7 +3770,7 @@
"source": "https://github.com/bovigo/vfsStream/tree/master",
"wiki": "https://github.com/bovigo/vfsStream/wiki"
},
- "time": "2019-10-30T15:31:00+00:00"
+ "time": "2021-09-25T08:05:01+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -3562,16 +3832,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.11.0",
+ "version": "v4.13.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94"
+ "reference": "50953a2691a922aa1769461637869a0a2faa3f53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94",
- "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53",
+ "reference": "50953a2691a922aa1769461637869a0a2faa3f53",
"shasum": ""
},
"require": {
@@ -3612,22 +3882,22 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0"
},
- "time": "2021-07-03T13:36:55+00:00"
+ "time": "2021-09-20T12:20:58+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
@@ -3672,9 +3942,9 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/master"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
},
- "time": "2020-06-27T14:33:11+00:00"
+ "time": "2021-07-20T11:28:43+00:00"
},
{
"name": "phar-io/version",
@@ -3782,16 +4052,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.2.2",
+ "version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
"shasum": ""
},
"require": {
@@ -3802,7 +4072,8 @@
"webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2"
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
},
"type": "library",
"extra": {
@@ -3832,22 +4103,22 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
},
- "time": "2020-09-03T19:13:55+00:00"
+ "time": "2021-10-19T17:43:47+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.4.0",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae",
+ "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae",
"shasum": ""
},
"require": {
@@ -3855,7 +4126,8 @@
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "ext-tokenizer": "*"
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
},
"type": "library",
"extra": {
@@ -3881,39 +4153,39 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1"
},
- "time": "2020-09-17T18:55:26+00:00"
+ "time": "2021-10-02T14:08:47+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "1.13.0",
+ "version": "1.14.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
+ "php": "^7.2 || ~8.0, <8.2",
"phpdocumentor/reflection-docblock": "^5.2",
"sebastian/comparator": "^3.0 || ^4.0",
"sebastian/recursion-context": "^3.0 || ^4.0"
},
"require-dev": {
- "phpspec/phpspec": "^6.0",
+ "phpspec/phpspec": "^6.0 || ^7.0",
"phpunit/phpunit": "^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.11.x-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -3948,9 +4220,9 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+ "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
},
- "time": "2021-03-17T13:42:18+00:00"
+ "time": "2021-09-10T09:02:12+00:00"
},
{
"name": "phpspec/prophecy-phpunit",
@@ -4006,23 +4278,23 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.6",
+ "version": "9.2.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f6293e1b30a2354e8428e004689671b83871edde"
+ "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
- "reference": "f6293e1b30a2354e8428e004689671b83871edde",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218",
+ "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.10.2",
+ "nikic/php-parser": "^4.12.0",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -4071,7 +4343,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7"
},
"funding": [
{
@@ -4079,7 +4351,7 @@
"type": "github"
}
],
- "time": "2021-03-28T07:26:59+00:00"
+ "time": "2021-09-17T05:39:03+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -4324,16 +4596,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.6",
+ "version": "9.5.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb"
+ "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
- "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
+ "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
"shasum": ""
},
"require": {
@@ -4345,11 +4617,11 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
- "phpunit/php-code-coverage": "^9.2.3",
+ "phpunit/php-code-coverage": "^9.2.7",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
@@ -4411,7 +4683,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10"
},
"funding": [
{
@@ -4423,7 +4695,7 @@
"type": "github"
}
],
- "time": "2021-06-23T05:14:38+00:00"
+ "time": "2021-09-25T07:38:51+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -5452,16 +5724,16 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.6.0",
+ "version": "3.6.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
+ "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
- "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e",
+ "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e",
"shasum": ""
},
"require": {
@@ -5504,20 +5776,102 @@
"source": "https://github.com/squizlabs/PHP_CodeSniffer",
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
},
- "time": "2021-04-09T00:54:41+00:00"
+ "time": "2021-10-11T04:00:11+00:00"
+ },
+ {
+ "name": "symfony/phpunit-bridge",
+ "version": "v4.4.33",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/phpunit-bridge.git",
+ "reference": "87aa6bd620145070f148fe79d79e03d710bbe3a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/87aa6bd620145070f148fe79d79e03d710bbe3a9",
+ "reference": "87aa6bd620145070f148fe79d79e03d710bbe3a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
+ },
+ "bin": [
+ "bin/simple-phpunit"
+ ],
+ "type": "symfony-bridge",
+ "extra": {
+ "thanks": {
+ "name": "phpunit/phpunit",
+ "url": "https://github.com/sebastianbergmann/phpunit"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Bridge\\PhpUnit\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides utilities for PHPUnit, especially user deprecation notices management",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.33"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-28T13:06:20+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -5546,7 +5900,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/master"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -5554,7 +5908,7 @@
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
},
{
"name": "webmozart/assert",
@@ -5617,12 +5971,10 @@
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {
- "islandora/chullo": 20
- },
+ "stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.1.0"
}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 67a52f9..d4aa25e 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,20 +1,49 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- tests
+
+ Tests
-
-
- src/
+
+
+
+ .
+
- tests/
+ Tests
+ vendor
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Provider/IslandoraServiceProvider.php b/src/Provider/IslandoraServiceProvider.php
deleted file mode 100644
index 4ad871a..0000000
--- a/src/Provider/IslandoraServiceProvider.php
+++ /dev/null
@@ -1,94 +0,0 @@
-register(new MonologServiceProvider());
- $container->register(new ServiceControllerServiceProvider());
- $container->register(new SecurityServiceProvider());
- $container->register(new DoctrineServiceProvider());
-
- // Configure external services
- $container['monolog.logfile'] = function ($container) {
- return strtolower($container['crayfish.log.level']) == 'none' ? null : $container['crayfish.log.file'];
- };
- $container['monolog.level'] = function ($container) {
- return $container['crayfish.log.level'];
- };
-
- $container['security.firewalls'] = function ($container) {
- if ($container['crayfish.syn.enable']) {
- return [
- 'default' => [
- 'stateless' => true,
- 'anonymous' => false,
- 'guard' => [
- 'authenticators' => [
- 'crayfish.syn.jwt_authentication'
- ],
- ],
- ],
- ];
- } else {
- return [];
- }
- };
-
- // Register our services
- $container['crayfish.cmd_execute_service'] = function ($container) {
- return new CmdExecuteService(
- $container['monolog']->withName('crayfish.cmd_execute_service')
- );
- };
-
- $container['crayfish.apix_middleware'] = function ($container) {
- return new ApixMiddleware(
- FedoraApi::create($container['crayfish.fedora_resource.base_url']),
- $container['monolog']->withName('crayfish.apix_middleware')
- );
- };
-
- $container['crayfish.syn.settings_parser'] = function ($container) {
- if (file_exists($container['crayfish.syn.config'])) {
- $xml = file_get_contents($container['crayfish.syn.config']);
- } else {
- $xml = '';
- $container['monolog']
- ->error("Securty configuration not found. ${container['crayfish.syn.config']}");
- }
-
- return new SettingsParser(
- $xml,
- $container['monolog']->withName('crayfish.syn.settings_parser')
- );
- };
-
- $container['crayfish.syn.jwt_authentication'] = function ($app) {
- return new JwtAuthenticator(
- $app['crayfish.syn.settings_parser'],
- new JwtFactory(),
- $app['monolog']->withName('crayfish.syn.jwt_authentication')
- );
- };
- }
-}
diff --git a/src/Provider/YamlConfigServiceProvider.php b/src/Provider/YamlConfigServiceProvider.php
deleted file mode 100644
index b162ad3..0000000
--- a/src/Provider/YamlConfigServiceProvider.php
+++ /dev/null
@@ -1,61 +0,0 @@
-config = $config;
- $this->basename = $basename;
- }
-
- protected function getName($name, $key)
- {
- return "$name.$key";
- }
-
- protected function isAssocArray($array)
- {
- if (!is_array($array)) {
- return false;
- }
-
- if (array() === $array) {
- return false;
- }
-
- return array_keys($array) !== range(0, count($array) - 1);
- }
-
- protected function parse($container, $array, $name)
- {
- foreach ($array as $key => $value) {
- if ($this->isAssocArray($value)) {
- $this->parse($container, $value, $this->getName($name, $key));
- } else {
- $container[$this->getName($name, $key)] = $value;
- }
- }
- }
-
- /**
- * @inheritDoc
- */
- public function register(Container $container)
- {
- if (!file_exists($this->config)) {
- throw new InvalidArgumentException("File does not exist!");
- }
- $data = Yaml::parse(file_get_contents($this->config));
- $this->parse($container, $data, $this->basename);
- }
-}
diff --git a/tests/Provider/IslandoraServiceProviderTest.php b/tests/Provider/IslandoraServiceProviderTest.php
deleted file mode 100644
index 7b7480c..0000000
--- a/tests/Provider/IslandoraServiceProviderTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-register($container);
- $this->container = $container;
- }
-
- public function testMonolog()
- {
- $this->container['crayfish.log.file'] = 'test';
- $this->container['crayfish.log.level'] = 'debug';
- $this->assertInstanceOf(Logger::class, $this->container['monolog']);
- }
-
- public function testSecurityEnable()
- {
- $this->container['crayfish.syn.enable'] = true;
- $this->assertArrayHasKey('default', $this->container['security.firewalls']);
- }
-
- public function testSecurityDisable()
- {
- $this->container['crayfish.syn.enable'] = false;
- $this->assertEquals([], $this->container['security.firewalls']);
- }
-
- public function testCmdExecute()
- {
- // Uses log
- $this->container['crayfish.log.level'] = 'none';
- $this->assertInstanceOf(CmdExecuteService::class, $this->container['crayfish.cmd_execute_service']);
- }
-
- public function testApixMiddleware()
- {
- $this->container['crayfish.log.level'] = 'none';
- $this->container['crayfish.fedora_resource.base_url'] = 'http://localhost:8080/fcrepo/rest';
- $this->assertInstanceOf(ApixMiddleware::class, $this->container['crayfish.apix_middleware']);
- }
-
- public function testSyn()
- {
- // Uses log
- $this->container['crayfish.log.level'] = 'none';
-
- // Syn variables
- $this->container['crayfish.syn.config'] = '';
-
- $this->assertInstanceOf(SettingsParser::class, $this->container['crayfish.syn.settings_parser']);
- $this->assertInstanceOf(JwtAuthenticator::class, $this->container['crayfish.syn.jwt_authentication']);
- }
-}
diff --git a/tests/Provider/YamlConfigServiceProviderTest.php b/tests/Provider/YamlConfigServiceProviderTest.php
deleted file mode 100644
index 999f81e..0000000
--- a/tests/Provider/YamlConfigServiceProviderTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-url();
- $file = $dir . DIRECTORY_SEPARATOR . "test_config.yaml";
- $yaml = <<register($container);
- $this->assertEquals([1, 2, 3], $container['crayfish.test.this']);
- $this->assertEquals('wowza', $container['crayfish.test.that']);
- $this->assertEquals('bar', $container['crayfish.another.foo']);
- }
-
- public function testYamlNoFile()
- {
- $this->expectException(InvalidArgumentException::class);
- $parser = new YamlConfigServiceProvider('/does/not/exist');
- $container = new Container();
- $parser->register($container);
- }
-}