diff --git a/lib/MetaCPAN/Web/Controller/Permission.pm b/lib/MetaCPAN/Web/Controller/Permission.pm
index 5bae02c567..669646c1df 100644
--- a/lib/MetaCPAN/Web/Controller/Permission.pm
+++ b/lib/MetaCPAN/Web/Controller/Permission.pm
@@ -1,6 +1,7 @@
package MetaCPAN::Web::Controller::Permission;
use Moose;
+use List::Util qw(uniq);
use namespace::autoclean;
BEGIN { extends 'MetaCPAN::Web::Controller' }
@@ -15,6 +16,18 @@ sub distribution : Local Args(1) {
my ( $self, $c, $distribution ) = @_;
$c->forward( 'get', $c, [ 'distribution', $distribution ] );
+
+ my $modules = $c->stash->{permission};
+ my $total_modules = scalar @$modules;
+ my %num_modules_of;
+ for my $module (@$modules) {
+ ++$num_modules_of{ $module->{owner} };
+ ++$num_modules_of{$_} for @{ $module->{co_maintainers} };
+ }
+ my @releaser = sort grep { $num_modules_of{$_} == $total_modules }
+ keys %num_modules_of;
+
+ $c->stash( releaser => \@releaser );
}
sub module : Local Args(1) {
@@ -38,6 +51,12 @@ sub get : Private {
}
$c->stash( { search_term => $name, permission => $perms } );
+
+ return if $type eq 'module';
+ $c->stash( {
+ num_owners => scalar( uniq map $_->{owner}, @$perms ),
+ num_comaints => scalar( uniq map @{ $_->{co_maintainers} }, @$perms ),
+ } );
}
__PACKAGE__->meta->make_immutable;
diff --git a/root/inc/permission.html b/root/inc/permission.html
index 3527c11cd8..dd8a22818c 100644
--- a/root/inc/permission.html
+++ b/root/inc/permission.html
@@ -1,8 +1,8 @@
- Name |
- Owner |
- Co-Maintainers |
+ Module (<% permission.size %>) |
+ Owner (<% num_owners %>) |
+ Co-Maintainers (<% num_comaints %>) |
<% FOREACH module IN permission %>
diff --git a/root/permission/distribution.html b/root/permission/distribution.html
index 33f5b656d4..c572473524 100644
--- a/root/permission/distribution.html
+++ b/root/permission/distribution.html
@@ -2,4 +2,24 @@
Module Permissions for <% search_term %>
+
+
+ Authorized Releasers (<% releaser.size %>) |
+
+ <% FOREACH author IN releaser %>
+
+
+ <% author %>
+ |
+
+ <% END %>
+ <% IF releaser.size == 0 %>
+
+
+ No owner<% IF num_comaints %> or co-maintainer<% END %> has permissions for all modules in this distribution.
+ |
+
+ <% END %>
+
+
<% INCLUDE 'inc/permission.html' %>