diff --git a/lib/PiTube/Controller/Stream.pm b/lib/PiTube/Controller/Stream.pm
index 5e80a69b3047651221a9318d8b9ab12351552441..5417171f58e67ba5c88167be471b2ab5f3df79f3 100644
--- a/lib/PiTube/Controller/Stream.pm
+++ b/lib/PiTube/Controller/Stream.pm
@@ -20,8 +20,26 @@ sub list {
         { order_by => 'name' }
     );
 
-    $c->stash->{streams} = $streams;
+    my @streams = ();
+
+    STREAM:
+    while ( my $stream = $streams->next()) {
+        my $rights = $c->session->{user}{acl}{ $stream->key };
+        next STREAM if ! $rights;
+
+        push @streams, {
+            is_live       => $stream->is_live,
+            key           => $stream->key,
+            name          => $stream->name,
+            publisher     => $stream->is_live ? $stream->publish_user_name : '',
+            is_writeable  => $c->is('publisher')
+                          && $stream->is_writeable( $rights ),
+            is_recordable => $c->is('publisher')
+                          && $stream->is_recordable( $c->session->{user}{username} ),
+        };
+    }
 
+    $c->stash->{streams} = \@streams;
 }
 
 
@@ -45,7 +63,7 @@ sub player {
 
     $c->stash->{stream} = $stream;
 
-    if ( ! $c->session->{user}{acl}{ $stream->key } ) {
+    if ( ! ( $c->session->{user}{acl}{ $stream->key } & 4 ) ) { # TODO:constant
         $c->render('stream/403');
         return;
     }