From 1f2fcefbe85e67e4d9b65d3a3e3e68fce847c448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz> Date: Sat, 28 Nov 2020 23:42:37 +0100 Subject: [PATCH] Lepsi aplikace ACL, okamzite ukladani nazvu nahravky --- lib/PiTube/Controller/Record.pm | 10 +++++++++- lib/PiTube/Controller/Stream.pm | 17 ++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/lib/PiTube/Controller/Record.pm b/lib/PiTube/Controller/Record.pm index 67be99c..cc823da 100644 --- a/lib/PiTube/Controller/Record.pm +++ b/lib/PiTube/Controller/Record.pm @@ -4,8 +4,16 @@ use Mojo::Base 'Mojolicious::Controller'; sub list { my $c = shift; + my $readable = $c->schema->resultset('ACL')->user_acl( + $c->session->{user}, 4 + ); + my $cond = { - is_active => 't' + is_active => 't', + -or => [ + { stream_is_public => 't' }, + { stream_key => { -in => $readable }}, + ] }; my $records = $c->schema->resultset('Record_view')->search( diff --git a/lib/PiTube/Controller/Stream.pm b/lib/PiTube/Controller/Stream.pm index 17e07e2..d0b64c2 100644 --- a/lib/PiTube/Controller/Stream.pm +++ b/lib/PiTube/Controller/Stream.pm @@ -13,12 +13,18 @@ use constant HLS_URL => '/hls/%s.m3u8'; sub list { my $c = shift; + my $readable = $c->schema->resultset('ACL')->user_acl( + $c->session->{user}, 4 + ); + my $cond = { - is_active => 't' + is_active => 't', + -or => [ + { is_public => 't' }, + { key => { -in => $readable }}, + ] }; - $cond->{is_public} = 't' if ! $c->is_user_authenticated; - my $streams = $c->schema->resultset('Stream_view')->search( $cond, { order_by => 'name' } @@ -31,10 +37,6 @@ sub list { my $rights = $c->session->{user}{acl}{ $stream->key }; - if ( ! $stream->is_public ) { - next STREAM if ! $rights; - } - if ( $c->param('live') ) { next STREAM if ! $stream->is_live; } @@ -168,6 +170,7 @@ sub recording { if ( $recording ) { $stream->add_to_records({ publish_user_id => $stream->publish_user_id, + path => $res->body, }); } $guard->commit; -- GitLab