mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-28 22:01:33 +00:00
Fix types in admin area
This commit is contained in:
@@ -23,7 +23,7 @@ class AdminAnidbController extends BasePageController
|
||||
$anidbService = new AnidbService;
|
||||
$title = $meta_title = 'AniDB List';
|
||||
|
||||
$animetitle = $request->input('animetitle', '');
|
||||
$animetitle = $this->scalarInput($request, 'animetitle');
|
||||
$anidblist = $anidbService->getAnimeRange($animetitle);
|
||||
|
||||
return view('admin.anidb.index', compact('anidblist', 'animetitle', 'title', 'meta_title'));
|
||||
|
||||
@@ -23,7 +23,7 @@ class AdminCategoryRegexesController extends BasePageController
|
||||
|
||||
$meta_title = $title = 'Category Regex List';
|
||||
|
||||
$group = $request->has('group') && ! empty($request->input('group')) ? $request->input('group') : '';
|
||||
$group = $this->scalarInput($request, 'group');
|
||||
$regex = $regexes->getRegex($group);
|
||||
|
||||
$this->viewData = array_merge($this->viewData, [
|
||||
|
||||
@@ -23,7 +23,7 @@ class AdminCollectionRegexesController extends BasePageController
|
||||
|
||||
$meta_title = $title = 'Collections Regex List';
|
||||
|
||||
$group = ($request->has('group') && ! empty($request->input('group')) ? $request->input('group') : '');
|
||||
$group = $this->scalarInput($request, 'group');
|
||||
$regex = $regexes->getRegex($group);
|
||||
|
||||
$this->viewData = array_merge($this->viewData, [
|
||||
|
||||
@@ -23,7 +23,7 @@ class AdminGameController extends BasePageController
|
||||
$meta_title = $title = 'Game List';
|
||||
|
||||
// Get search parameter
|
||||
$search = $request->input('gamesearch', '');
|
||||
$search = $this->scalarInput($request, 'gamesearch');
|
||||
|
||||
if (! empty($search)) {
|
||||
$gamelist = $game->getRange($search);
|
||||
|
||||
@@ -33,10 +33,10 @@ class AdminInvitationController extends BasePageController
|
||||
$meta_title = $title = 'Invitation Management';
|
||||
|
||||
// Get filter parameters
|
||||
$status = $request->get('status', '');
|
||||
$invited_by = $request->get('invited_by', '');
|
||||
$email = $request->get('email', '');
|
||||
$orderBy = $request->get('ob', 'created_at_desc');
|
||||
$status = $this->scalarInput($request, 'status');
|
||||
$invited_by = $this->scalarInput($request, 'invited_by');
|
||||
$email = $this->scalarInput($request, 'email');
|
||||
$orderBy = $this->scalarInput($request, 'ob', 'created_at_desc');
|
||||
|
||||
// Build query
|
||||
$query = Invitation::with(['invitedBy', 'usedBy']);
|
||||
|
||||
@@ -33,10 +33,10 @@ class AdminMovieController extends BasePageController
|
||||
*/
|
||||
public function index(Request $request): mixed
|
||||
{
|
||||
$lastSearch = $request->input('moviesearch', '');
|
||||
$lastSearch = $this->scalarInput($request, 'moviesearch');
|
||||
|
||||
if ($request->has('moviesearch')) {
|
||||
$movielist = MovieInfo::getAll($request->input('moviesearch'));
|
||||
$movielist = MovieInfo::getAll($lastSearch);
|
||||
} else {
|
||||
$movielist = MovieInfo::getAll();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ class AdminMusicController extends BasePageController
|
||||
$meta_title = $title = 'Music List';
|
||||
|
||||
// Get search parameter
|
||||
$search = $request->input('musicsearch', '');
|
||||
$search = $this->scalarInput($request, 'musicsearch');
|
||||
|
||||
if (! empty($search)) {
|
||||
$musicList = getRange('musicinfo');
|
||||
|
||||
@@ -18,7 +18,7 @@ class AdminPredbController extends BasePageController
|
||||
{
|
||||
$this->setAdminPrefs();
|
||||
|
||||
$lastSearch = $request->input('presearch', '');
|
||||
$lastSearch = $this->scalarInput($request, 'presearch');
|
||||
|
||||
if ($lastSearch) {
|
||||
$results = Predb::getAll($lastSearch);
|
||||
|
||||
@@ -23,10 +23,7 @@ class AdminReleaseNamingRegexesController extends BasePageController
|
||||
|
||||
$meta_title = $title = 'Release Naming Regex List';
|
||||
|
||||
$group = '';
|
||||
if ($request->has('group') && ! empty($request->input('group'))) {
|
||||
$group = $request->input('group');
|
||||
}
|
||||
$group = $this->scalarInput($request, 'group');
|
||||
$regex = $regexes->getRegex($group);
|
||||
|
||||
$this->viewData = array_merge($this->viewData, [
|
||||
|
||||
@@ -24,7 +24,7 @@ class AdminShowsController extends BasePageController
|
||||
|
||||
$meta_title = $title = 'TV Shows List';
|
||||
|
||||
$showname = $request->input('showname', '');
|
||||
$showname = $this->scalarInput($request, 'showname');
|
||||
$tvshowlist = Video::getRange($showname);
|
||||
|
||||
return view('admin.shows.index', compact('tvshowlist', 'showname', 'title', 'meta_title'));
|
||||
|
||||
@@ -24,42 +24,51 @@ class AdminUserRoleHistoryController extends BasePageController
|
||||
// Get all roles for filter
|
||||
$roles = Role::all()->pluck('name', 'id')->toArray();
|
||||
|
||||
$filters = [
|
||||
'user_id' => $this->scalarInput($request, 'user_id'),
|
||||
'username' => $this->scalarInput($request, 'username'),
|
||||
'role_id' => $this->scalarInput($request, 'role_id'),
|
||||
'change_reason' => $this->scalarInput($request, 'change_reason'),
|
||||
'date_from' => $this->scalarInput($request, 'date_from'),
|
||||
'date_to' => $this->scalarInput($request, 'date_to'),
|
||||
];
|
||||
|
||||
// Build query
|
||||
$query = UserRoleHistory::with(['user', 'oldRole', 'newRole', 'changedByUser'])
|
||||
->orderBy('created_at', 'desc');
|
||||
|
||||
// Apply filters
|
||||
if ($request->has('user_id') && ! empty($request->input('user_id'))) {
|
||||
$query->where('user_id', $request->input('user_id'));
|
||||
if ($filters['user_id'] !== '') {
|
||||
$query->where('user_id', $filters['user_id']);
|
||||
}
|
||||
|
||||
if ($request->has('username') && ! empty($request->input('username'))) {
|
||||
$query->whereHas('user', function ($q) use ($request) {
|
||||
$q->where('username', 'like', '%'.$request->input('username').'%');
|
||||
if ($filters['username'] !== '') {
|
||||
$query->whereHas('user', function ($q) use ($filters) {
|
||||
$q->where('username', 'like', '%'.$filters['username'].'%');
|
||||
});
|
||||
}
|
||||
|
||||
if ($request->has('role_id') && ! empty($request->input('role_id'))) {
|
||||
$query->where(function ($q) use ($request) {
|
||||
$q->where('old_role_id', $request->input('role_id'))
|
||||
->orWhere('new_role_id', $request->input('role_id'));
|
||||
if ($filters['role_id'] !== '') {
|
||||
$query->where(function ($q) use ($filters) {
|
||||
$q->where('old_role_id', $filters['role_id'])
|
||||
->orWhere('new_role_id', $filters['role_id']);
|
||||
});
|
||||
}
|
||||
|
||||
if ($request->has('change_reason') && ! empty($request->input('change_reason'))) {
|
||||
$query->where('change_reason', 'like', '%'.$request->input('change_reason').'%');
|
||||
if ($filters['change_reason'] !== '') {
|
||||
$query->where('change_reason', 'like', '%'.$filters['change_reason'].'%');
|
||||
}
|
||||
|
||||
if ($request->has('date_from') && ! empty($request->input('date_from'))) {
|
||||
$query->where('created_at', '>=', $request->input('date_from').' 00:00:00');
|
||||
if ($filters['date_from'] !== '') {
|
||||
$query->where('created_at', '>=', $filters['date_from'].' 00:00:00');
|
||||
}
|
||||
|
||||
if ($request->has('date_to') && ! empty($request->input('date_to'))) {
|
||||
$query->where('created_at', '<=', $request->input('date_to').' 23:59:59');
|
||||
if ($filters['date_to'] !== '') {
|
||||
$query->where('created_at', '<=', $filters['date_to'].' 23:59:59');
|
||||
}
|
||||
|
||||
// Pagination
|
||||
$page = $request->has('page') && is_numeric($request->input('page')) ? $request->input('page') : 1;
|
||||
$page = $this->resolvePage($request);
|
||||
$perPage = config('nntmux.items_per_page', 50);
|
||||
|
||||
$results = $query->paginate($perPage, ['*'], 'page', $page);
|
||||
@@ -69,14 +78,7 @@ class AdminUserRoleHistoryController extends BasePageController
|
||||
'meta_title' => $meta_title,
|
||||
'history' => $results,
|
||||
'roles' => $roles,
|
||||
'filters' => [
|
||||
'user_id' => $request->input('user_id', ''),
|
||||
'username' => $request->input('username', ''),
|
||||
'role_id' => $request->input('role_id', ''),
|
||||
'change_reason' => $request->input('change_reason', ''),
|
||||
'date_from' => $request->input('date_from', ''),
|
||||
'date_to' => $request->input('date_to', ''),
|
||||
],
|
||||
'filters' => $filters,
|
||||
]);
|
||||
|
||||
return view('admin.user-role-history.index', $this->viewData);
|
||||
|
||||
@@ -25,14 +25,14 @@ class DeletedUsersController extends BasePageController
|
||||
$this->setAdminPrefs();
|
||||
|
||||
// Filters
|
||||
$username = $request->input('username', '');
|
||||
$email = $request->input('email', '');
|
||||
$host = $request->input('host', '');
|
||||
$orderBy = $request->filled('ob') ? $request->input('ob') : 'deleted_at_desc';
|
||||
$createdFrom = $request->input('created_from', '');
|
||||
$createdTo = $request->input('created_to', '');
|
||||
$deletedFrom = $request->input('deleted_from', '');
|
||||
$deletedTo = $request->input('deleted_to', '');
|
||||
$username = $this->scalarInput($request, 'username');
|
||||
$email = $this->scalarInput($request, 'email');
|
||||
$host = $this->scalarInput($request, 'host');
|
||||
$orderBy = $this->scalarInput($request, 'ob', 'deleted_at_desc');
|
||||
$createdFrom = $this->scalarInput($request, 'created_from');
|
||||
$createdTo = $this->scalarInput($request, 'created_to');
|
||||
$deletedFrom = $this->scalarInput($request, 'deleted_from');
|
||||
$deletedTo = $this->scalarInput($request, 'deleted_to');
|
||||
|
||||
$deletedUsers = User::onlyTrashed()
|
||||
->leftJoin('roles', 'roles.id', '=', 'users.roles_id')
|
||||
|
||||
@@ -4,9 +4,11 @@ namespace Tests\Unit;
|
||||
|
||||
use App\Http\Controllers\BasePageController;
|
||||
use App\Http\Controllers\SearchController;
|
||||
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
|
||||
use Illuminate\Http\Request;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use ReflectionClass;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class UserViewRequestInputTest extends TestCase
|
||||
{
|
||||
@@ -44,6 +46,20 @@ class UserViewRequestInputTest extends TestCase
|
||||
$this->assertSame(80, $controller->offset(5, 20));
|
||||
}
|
||||
|
||||
public function test_scalar_input_normalizes_an_explicitly_empty_query_after_http_middleware(): void
|
||||
{
|
||||
$request = Request::create('/admin/anidb-list', 'GET', ['animetitle' => '']);
|
||||
|
||||
(new ConvertEmptyStringsToNull)->handle(
|
||||
$request,
|
||||
static fn (Request $request): Response => new Response,
|
||||
);
|
||||
|
||||
$this->assertNull($request->input('animetitle'));
|
||||
$this->assertSame('', $this->controller()->scalar($request, 'animetitle'));
|
||||
$this->assertSame('all', $this->controller()->scalar($request, 'animetitle', 'all'));
|
||||
}
|
||||
|
||||
public function test_search_category_resolution_rejects_malformed_category_values(): void
|
||||
{
|
||||
$reflection = new ReflectionClass(SearchController::class);
|
||||
@@ -74,9 +90,9 @@ class UserViewRequestInputTest extends TestCase
|
||||
return $this->resolveOrderBy($request, $ordering);
|
||||
}
|
||||
|
||||
public function scalar(Request $request, string $key): string
|
||||
public function scalar(Request $request, string $key, string $default = ''): string
|
||||
{
|
||||
return $this->scalarInput($request, $key);
|
||||
return $this->scalarInput($request, $key, $default);
|
||||
}
|
||||
|
||||
public function integer(Request $request, string $key, int $default): int
|
||||
|
||||
Reference in New Issue
Block a user