From 5bd1283d3052907b5ed44125dd3c711b43a6445f Mon Sep 17 00:00:00 2001 From: DariusIII Date: Mon, 25 Feb 2019 13:00:24 +0100 Subject: [PATCH] Properly handle rss feeds --- Changelog | 1 + app/Http/Controllers/BasePageController.php | 2 +- app/Http/Controllers/RssController.php | 60 ++++++++------------- config/auth.php | 4 ++ routes/rss.php | 13 ++--- routes/web.php | 3 ++ 6 files changed, 36 insertions(+), 47 deletions(-) diff --git a/Changelog b/Changelog index 5a62d67bd..3697a782a 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2019-02-25 DariusIII + * Fix: Properly handle rss feeds * Fix: Fix rss routing, remove dead routes from web.php * Chg: Update canihavesomecoffee/thetvdbapi (1.0.9 => 1.1.0) 2019-02-24 DariusIII diff --git a/app/Http/Controllers/BasePageController.php b/app/Http/Controllers/BasePageController.php index 3584aee08..939ee12d3 100644 --- a/app/Http/Controllers/BasePageController.php +++ b/app/Http/Controllers/BasePageController.php @@ -83,7 +83,7 @@ class BasePageController extends Controller */ public function __construct() { - $this->middleware(['auth', 'web'])->except('api', 'contact', 'showContactForm', 'callback', 'getNzb', 'terms', 'capabilities', 'movie', 'apiSearch', 'tv', 'details', 'failed', 'showRssDesc', 'feedRss', 'categoryRss', 'cartRss', 'myMoviesRss', 'myShowsRss'); + $this->middleware(['auth', 'web'])->except('api', 'contact', 'showContactForm', 'callback', 'getNzb', 'terms', 'capabilities', 'movie', 'apiSearch', 'tv', 'details', 'failed', 'showRssDesc', 'fullFeedRss', 'categoryFeedRss', 'cartRss', 'myMoviesRss', 'myShowsRss'); // Buffer settings/DB connection. $this->settings = new Settings(); $this->smarty = app('smarty.view'); diff --git a/app/Http/Controllers/RssController.php b/app/Http/Controllers/RssController.php index 9a467310e..dee9e55c8 100644 --- a/app/Http/Controllers/RssController.php +++ b/app/Http/Controllers/RssController.php @@ -7,7 +7,7 @@ use App\Models\Category; use Blacklight\http\RSS; use App\Models\UserRequest; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Arr; class RssController extends BasePageController { @@ -19,11 +19,10 @@ class RssController extends BasePageController */ public function myMoviesRss(Request $request) { - $this->setPrefs(); $rss = new RSS(['Settings' => $this->settings]); $offset = 0; - $user = $this->userCheck($request->all()); + $user = $this->userCheck($request); $outputXML = (! ($request->has('o') && $request->input('o') === 'json')); @@ -41,10 +40,9 @@ class RssController extends BasePageController */ public function myShowsRss(Request $request) { - $this->setPrefs(); $rss = new RSS(['Settings' => $this->settings]); $offset = 0; - $user = $this->userCheck($request->all()); + $user = $this->userCheck($request); $userAirDate = $request->has('airdate') && is_numeric($request->input('airdate')) ? abs($request->input('airdate')) : -1; $userNum = ($request->has('num') && is_numeric($request->input('num')) ? abs($request->input('num')) : 0); $relData = $rss->getShowsRss($userNum, $user['user_id'], User::getCategoryExclusionById($user['user_id']), $userAirDate); @@ -60,10 +58,9 @@ class RssController extends BasePageController */ public function fullFeedRss(Request $request) { - $this->setPrefs(); $rss = new RSS(['Settings' => $this->settings]); $offset = 0; - $user = $this->userCheck($request->all()); + $user = $this->userCheck($request); $userAirDate = $request->has('airdate') && is_numeric($request->input('airdate')) ? abs($request->input('airdate')) : -1; $userNum = ($request->has('num') && is_numeric($request->input('num')) ? abs($request->input('num')) : 0); $userLimit = $request->has('limit') && is_numeric($request->input('limit')) ? $request->input('limit') : 100; @@ -74,7 +71,7 @@ class RssController extends BasePageController $userAnidb = ((int) $request->input('anidb') === 0 ? -1 : $request->input('anidb') + 0); } $outputXML = (! ($request->has('o') && $request->input('o') === 'json')); - $relData = $rss->getRss([0], $userShow, $userAnidb, $user['user_id'], $userAirDate, $userLimit, $userNum); + $relData = $rss->getRss(Arr::wrap(0), $userShow, $userAnidb, $user['user_id'], $userAirDate, $userLimit, $userNum); $rss->output($relData, $user['params'], $outputXML, $offset, 'rss'); } @@ -115,13 +112,7 @@ class RssController extends BasePageController $content = $this->smarty->fetch('rssdesc.tpl'); $this->smarty->assign( - [ - 'content' => $content, - 'title' => $title, - 'meta_title' => $meta_title, - 'meta_keywords' => $meta_keywords, - 'meta_description' => $meta_description, - ] + compact('content', 'title', 'meta_title', 'meta_keywords', 'meta_description') ); $this->pagerender(); } @@ -131,7 +122,7 @@ class RssController extends BasePageController $this->setPrefs(); $rss = new RSS(['Settings' => $this->settings]); $offset = 0; - $user = $this->userCheck($request->all()); + $user = $this->userCheck($request); $outputXML = (! ($request->has('o') && $request->input('o') === 'json')); $userAirDate = $request->has('airdate') && is_numeric($request->input('airdate')) ? abs($request->input('airdate')) : -1; $userNum = ($request->has('num') && is_numeric($request->input('num')) ? abs($request->input('num')) : 0); @@ -162,8 +153,8 @@ class RssController extends BasePageController return response()->json(['error' => 'Category ID is missing'], '403'); } - $user = $this->userCheck($request->all()); - $categoryId = (int) $request->input('id'); + $user = $this->userCheck($request); + $categoryId = explode(',', $request->input('id')); $userAirDate = $request->has('airdate') && is_numeric($request->input('airdate')) ? abs($request->input('airdate')) : -1; $userNum = ($request->has('num') && is_numeric($request->input('num')) ? abs($request->input('num')) : 0); $userLimit = $request->has('limit') && is_numeric($request->input('limit')) ? $request->input('limit') : 100; @@ -185,29 +176,22 @@ class RssController extends BasePageController */ private function userCheck(Request $request) { - // User requested a feed, ensure user is passing a valid api_token. - if (Auth::check()) { - $uid = $this->userdata->id; - $rssToken = $this->userdata['api_token']; - $maxRequests = $this->userdata->role->apirequests; - } else { - if (! $request->has('api_token')) { - return response()->json(['error' => 'API key is required for viewing the RSS!'], 403); - } + if (! $request->has('api_token')) { + return response()->json(['error' => 'API key is required for viewing the RSS!'], 403); + } - $res = User::getByRssToken($request->input('api_token')); + $res = User::getByRssToken($request->input('api_token')); - if ($res === null) { - return response()->json(['error' => 'Invalid RSS token'], 403); - } + if ($res === null) { + return response()->json(['error' => 'Invalid RSS token'], 403); + } - $uid = $res['id']; - $rssToken = $res['api_token']; - $maxRequests = $res->role->apirequests; + $uid = $res['id']; + $rssToken = $res['api_token']; + $maxRequests = $res->role->apirequests; - if ($res->hasRole('Disabled')) { - return response()->json(['error' => 'Your account is disabled'], 403); - } + if ($res->hasRole('Disabled')) { + return response()->json(['error' => 'Your account is disabled'], 403); } if (UserRequest::getApiRequests($uid) > $maxRequests) { @@ -224,6 +208,6 @@ class RssController extends BasePageController 'token' => $rssToken, ]; - return ['user_id' => $uid, 'rss_token' => $rssToken, 'max_requests' => $maxRequests, 'params' => $params]; + return ['user' => $res, 'user_id' => $uid, 'rss_token' => $rssToken, 'max_requests' => $maxRequests, 'params' => $params]; } } diff --git a/config/auth.php b/config/auth.php index 087bbb3e4..4c65d116a 100644 --- a/config/auth.php +++ b/config/auth.php @@ -45,6 +45,10 @@ return [ 'driver' => 'token', 'provider' => 'users', ], + 'rss' => [ + 'driver' => 'token', + 'provider' => 'users', + ], ], /* diff --git a/routes/rss.php b/routes/rss.php index 62a608c9c..ec41dc4df 100644 --- a/routes/rss.php +++ b/routes/rss.php @@ -10,18 +10,15 @@ | */ -Route::group(['middleware' => ['auth:api']], function () { +Route::group(['guard' => 'rss', 'middleware' => ['auth:api', 'fw-block-blacklisted']], function () { Route::get('mymovies', 'RssController@myMoviesRss'); Route::post('mymovies', 'RssController@myMoviesRss'); Route::get('myshows', 'RssController@myShowsRss'); Route::post('myshows', 'RssController@myShowsRss'); - Route::get('full-feed', 'RssController@feedRss'); - Route::post('full-feed', 'RssController@feedRss'); + Route::get('full-feed', 'RssController@fullFeedRss'); + Route::post('full-feed', 'RssController@fullFeedRss'); Route::get('cart', 'RssController@cartRss'); Route::post('cart', 'RssController@cartRss'); - Route::get('category', 'RssController@categoryRss'); - Route::post('category', 'RssController@categoryRss'); + Route::get('category', 'RssController@categoryFeedRss'); + Route::post('category', 'RssController@categoryFeedRss'); }); - -Route::get('help', 'RssController@showRssDesc'); -Route::post('help', 'RssController@showRssDesc'); diff --git a/routes/web.php b/routes/web.php index 70301238b..7ed49cf6e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -57,6 +57,9 @@ Route::group(['middleware' => ['isVerified', 'fw-block-blacklisted']], function Route::get('getnzb', 'GetNzbController@getNzb'); Route::post('getnzb', 'GetNzbController@getNzb'); + Route::get('rsshelp', 'RssController@showRssDesc'); + Route::post('rsshelp', 'RssController@showRssDesc'); + Route::get('profile', 'ProfileController@show'); Route::get('apihelp', 'ApiHelpController@index');