Browse Source

Security: make package version specific list actually filter instead of just highlighting

Stephan Vock 5 years ago
parent
commit
6f6ddcdf73

+ 8 - 4
src/Packagist/WebBundle/Controller/PackageController.php

@@ -1150,11 +1150,8 @@ class PackageController extends Controller
         /** @var SecurityAdvisoryRepository $repo */
         $repo = $this->getDoctrine()->getRepository(SecurityAdvisory::class);
         $securityAdvisories = $repo->getPackageSecurityAdvisories($name);
-        $advisoryCount = count($securityAdvisories);
 
         $data = [];
-        $data['securityAdvisories'] = $securityAdvisories;
-        $data['count'] = $advisoryCount;
         $data['name'] = $name;
 
         $data['matchingAdvisories'] = [];
@@ -1164,16 +1161,23 @@ class PackageController extends Controller
                 'id' => $versionId,
             ]);
             if ($version) {
+                $versionSecurityAdvisories = [];
                 $versionParser = new VersionParser();
                 foreach ($securityAdvisories as $advisory) {
                     $affectedVersionConstraint = $versionParser->parseConstraints($advisory['affectedVersions']);
                     if ($affectedVersionConstraint->matches(new Constraint('=', $version->getNormalizedVersion()))) {
-                        $data['matchingAdvisories'][] = $advisory['id'];
+                        $versionSecurityAdvisories[] = $advisory;
                     }
                 }
+
+                $data['version'] = $version->getVersion();
+                $securityAdvisories = $versionSecurityAdvisories;
             }
         }
 
+        $data['securityAdvisories'] = $securityAdvisories;
+        $data['count'] = count($securityAdvisories);
+
         return $this->render('PackagistWebBundle:package:security_advisories.html.twig', $data);
     }
 

+ 6 - 2
src/Packagist/WebBundle/Resources/views/package/security_advisories.html.twig

@@ -11,7 +11,11 @@
         <div class="col-xs-12 package">
             <div class="package-header">
                 <h2 class="title">
-                    <a href="{{ path("view_package", {name: name}) }}">{{ name }}</a> {{ 'packages.security_advisories'|trans }}
+                    <a href="{{ path("view_package", {name: name}) }}">{{ name }}</a>
+                    {{ 'packages.security_advisories'|trans }}
+                    {% if version is defined %}
+                        for {{ version }}
+                    {% endif %}
                     <small>({{ count }})</small>
                 </h2>
             </div>
@@ -23,7 +27,7 @@
             {% if securityAdvisories|length %}
                 <ul class="packages list-unstyled">
                     {% for advisory in securityAdvisories %}
-                        <li class="row {% if advisory.id in matchingAdvisories %}selected{% endif %}">
+                        <li class="row">
                             <div class="col-xs-12 package-item">
                                 <div class="row">
                                     <div class="col-sm-8 col-lg-9">