diff --git a/Changelog b/Changelog index d7427a887..d5926673c 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-12-12 DariusIII + * Chg: Remove requirement for userid when using RSS, API and APIv2, its useless as we already have the token * Chg: Update code style of movieinfo table migration * Chg: Update font-awesome to version 5.6.1 and update all-css.css and all-js.js files, also update package.json * Chg: Update laravel/framework to version 5.7.17 diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php index 808eda45f..f3f1b9f12 100644 --- a/app/Http/Controllers/Api/ApiController.php +++ b/app/Http/Controllers/Api/ApiController.php @@ -116,7 +116,7 @@ class ApiController extends BasePageController $api->verifyEmptyParameter('q'); $maxAge = $api->maxAge(); $groupName = $api->group(); - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $categoryID = $api->categoryID(); $limit = $api->limit(); @@ -170,7 +170,7 @@ class ApiController extends BasePageController $api->verifyEmptyParameter('season'); $api->verifyEmptyParameter('ep'); $maxAge = $api->maxAge(); - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $siteIdArr = [ 'id' => $request->input('vid') ?? '0', @@ -214,7 +214,7 @@ class ApiController extends BasePageController $api->verifyEmptyParameter('q'); $api->verifyEmptyParameter('imdbid'); $maxAge = $api->maxAge(); - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $imdbId = $request->has('imdbid') && ! empty($request->input('imdbid')) ? $request->input('imdbid') : -1; $tmdbId = $request->has('tmdbid') && ! empty($request->input('tmdbid')) ? $request->input('tmdbid') : -1; @@ -247,10 +247,10 @@ class ApiController extends BasePageController // Get NZB. case 'g': $api->verifyEmptyParameter('g'); - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $relData = Release::checkGuidForApi($request->input('id')); if ($relData !== false) { - return redirect(WWW_TOP.'/getnzb?i='.$uid.'&r='.$apiKey.'&id='.$request->input('id').(($request->has('del') && $request->input('del') === '1') ? '&del=1' : '')); + return redirect(WWW_TOP.'/getnzb?r='.$apiKey.'&id='.$request->input('id').(($request->has('del') && $request->input('del') === '1') ? '&del=1' : '')); } Utility::showApiError(300, 'No such item (the guid you provided has no release in our database)'); @@ -262,7 +262,7 @@ class ApiController extends BasePageController Utility::showApiError(200, 'Missing parameter (guid is required for single release details)'); } - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $data = Release::getByGuid($request->input('id')); $api->output($data, $params, $outputXML, $offset, 'api'); @@ -274,7 +274,7 @@ class ApiController extends BasePageController Utility::showApiError(200, 'Missing parameter (id is required for retrieving an NFO)'); } - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($apiKey, $request->getRequestUri()); $rel = Release::query()->where('guid', $request->input('id'))->first(['id', 'searchname']); $data = ReleaseNfo::getReleaseNfo($rel['id']); diff --git a/app/Http/Controllers/Api/ApiV2Controller.php b/app/Http/Controllers/Api/ApiV2Controller.php index 2f15b09c7..d200ae11c 100644 --- a/app/Http/Controllers/Api/ApiV2Controller.php +++ b/app/Http/Controllers/Api/ApiV2Controller.php @@ -72,7 +72,7 @@ class ApiV2Controller extends BasePageController $minSize = $request->has('minsize') && $request->input('minsize') > 0 ? $request->input('minsize') : 0; $maxAge = $api->maxAge(); $catExclusions = User::getCategoryExclusion($this->userdata->id); - UserRequest::addApiRequest($this->userdata->id, $request->getRequestUri()); + UserRequest::addApiRequest($request->input('api_token'), $request->getRequestUri()); $imdbId = $request->has('imdbid') && ! empty($request->input('imdbid')) ? $request->input('imdbid') : -1; $tmdbId = $request->has('tmdbid') && ! empty($request->input('tmdbid')) ? $request->input('tmdbid') : -1; @@ -117,7 +117,7 @@ class ApiV2Controller extends BasePageController $tags = $request->has('tags') && ! empty($request->input('tags')) ? explode(',', $request->input('tags')) : []; $maxAge = $api->maxAge(); $groupName = $api->group(); - UserRequest::addApiRequest($this->userdata->id, $request->getRequestUri()); + UserRequest::addApiRequest($request->input('api_token'), $request->getRequestUri()); $categoryID = $api->categoryID(); $limit = $api->limit(); @@ -180,7 +180,7 @@ class ApiV2Controller extends BasePageController $api->verifyEmptyParameter('season'); $api->verifyEmptyParameter('ep'); $maxAge = $api->maxAge(); - UserRequest::addApiRequest($this->userdata->id, $request->getRequestUri()); + UserRequest::addApiRequest($request->input('api_token'), $request->getRequestUri()); $siteIdArr = [ 'id' => $request->input('vid') ?? '0', @@ -231,10 +231,10 @@ class ApiV2Controller extends BasePageController */ public function getNzb(Request $request) { - UserRequest::addApiRequest($this->userdata->id, $request->getRequestUri()); + UserRequest::addApiRequest($request->input('api_token'), $request->getRequestUri()); $relData = Release::checkGuidForApi($request->input('id')); if ($relData !== false) { - return redirect('/getnzb?i='.$this->userdata->id.'&r='.$this->userdata->api_token.'&id='.$request->input('id').(($request->has('del') && $request->input('del') === '1') ? '&del=1' : '')); + return redirect('/getnzb?r='.$this->userdata->api_token.'&id='.$request->input('id').(($request->has('del') && $request->input('del') === '1') ? '&del=1' : '')); } Utility::showApiError(300, 'No such item (the guid you provided has no release in our database)'); @@ -251,7 +251,7 @@ class ApiV2Controller extends BasePageController Utility::showApiError(200, 'Missing parameter (guid is required for single release details)'); } - UserRequest::addApiRequest($this->userdata->id, $request->getRequestUri()); + UserRequest::addApiRequest($request->input('api_token'), $request->getRequestUri()); $relData = Release::getByGuid($request->input('id')); $relData = fractal($relData, new DetailsTransformer($this->userdata)); diff --git a/app/Http/Controllers/FailedReleasesController.php b/app/Http/Controllers/FailedReleasesController.php index 14e22b96f..3874083ce 100644 --- a/app/Http/Controllers/FailedReleasesController.php +++ b/app/Http/Controllers/FailedReleasesController.php @@ -16,13 +16,13 @@ class FailedReleasesController extends BasePageController */ public function show(Request $request) { - if (! $request->has('userid') || ! $request->has('api_token')) { + if (! $request->has('api_token')) { return response('Bad request, please supply all parameters!', 400)->withHeaders(['X-DNZB-RCode' => 400, 'X-DNZB-RText' => 'Bad request, please supply all parameters!']); } - $res = User::getByIdAndRssToken($request->input('userid'), $request->input('api_token')); + $res = User::getByRssToken($request->input('api_token')); if ($res === null) { - return response('Unauthorised, wrong user ID or rss key!', 401)->withHeaders(['X-DNZB-RCode' => 401, 'X-DNZB-RText' => 'Unauthorised, wrong user ID or rss key!']); + return response('Unauthorised, wrong rss key!', 401)->withHeaders(['X-DNZB-RCode' => 401, 'X-DNZB-RText' => 'Unauthorised, wrong rss key!']); } $uid = $res['id']; @@ -35,7 +35,7 @@ class FailedReleasesController extends BasePageController return response('No NZB found for alternate match!', 404)->withHeaders(['X-DNZB-RCode' => 404, 'X-DNZB-RText' => 'No NZB found for alternate match.']); } - return response('Success', 200)->withHeaders(['Location' => url('/').'/getnzb?id='.$alt['guid'].'&i='.$uid.'&r='.$rssToken]); + return response('Success', 200)->withHeaders(['Location' => url('/').'/getnzb?id='.$alt['guid'].'&r='.$rssToken]); } return response('Bad request, please supply all parameters!', 400)->withHeaders(['X-DNZB-RCode' => 400, 'X-DNZB-RText' => 'Bad request, please supply all parameters!']); diff --git a/app/Http/Controllers/GetNzbController.php b/app/Http/Controllers/GetNzbController.php index 247324e86..48b5a82fe 100644 --- a/app/Http/Controllers/GetNzbController.php +++ b/app/Http/Controllers/GetNzbController.php @@ -35,11 +35,11 @@ class GetNzbController extends BasePageController Utility::showApiError(101); } } else { - if (! $request->has('i') || ! $request->has('r')) { + if (! $request->has('r')) { Utility::showApiError(200); } - $res = User::getByIdAndRssToken($request->input('i'), $request->input('r')); + $res = User::getByRssToken($request->input('r')); if (! $res) { Utility::showApiError(100); } diff --git a/app/Http/Controllers/RssController.php b/app/Http/Controllers/RssController.php index f6443c58f..d96923d0b 100644 --- a/app/Http/Controllers/RssController.php +++ b/app/Http/Controllers/RssController.php @@ -14,7 +14,7 @@ class RssController extends BasePageController { /** * @param \Illuminate\Http\Request $request - * @throws \Exception + * @throws \Throwable */ public function rss(Request $request) { @@ -72,11 +72,11 @@ class RssController extends BasePageController $rssToken = $this->userdata['api_token']; $maxRequests = $this->userdata->role->apirequests; } else { - if (! $request->has('i') || ! $request->has('r')) { - Utility::showApiError(100, 'Both the User ID and API key are required for viewing the RSS!'); + if (! $request->has('r')) { + Utility::showApiError(100, 'API key is required for viewing the RSS!'); } - $res = User::getByIdAndRssToken($request->input('i'), $request->input('r')); + $res = User::getByRssToken($request->input('r')); if (! $res) { Utility::showApiError(100); @@ -94,7 +94,7 @@ class RssController extends BasePageController if (UserRequest::getApiRequests($uid) > $maxRequests) { Utility::showApiError(500, 'You have reached your daily limit for API requests!'); } else { - UserRequest::addApiRequest($uid, $request->getRequestUri()); + UserRequest::addApiRequest($rssToken, $request->getRequestUri()); } // Valid or logged in user, get them the requested feed. diff --git a/app/Models/UserRequest.php b/app/Models/UserRequest.php index ec49fd301..e12ce897c 100644 --- a/app/Models/UserRequest.php +++ b/app/Models/UserRequest.php @@ -84,11 +84,12 @@ class UserRequest extends Model /** * If a user accesses the API, log it. * - * @param int $userID ID of the user. + * @param string $token API token of the user * @param string $request The API request. */ - public static function addApiRequest($userID, $request): void + public static function addApiRequest($token, $request): void { + $userID = User::query()->select(['id'])->where('api_token', $token)->value('id'); self::query()->insert(['users_id' => $userID, 'request' => $request, 'timestamp'=> now()]); }