Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2023-04-15 18:30:21 -07:00
commit b73aed2b69
25 changed files with 137 additions and 170 deletions

View file

@ -1,4 +1,4 @@
FROM ubuntu:20.04 FROM ubuntu:22.04
LABEL maintainer="Brady Wetherington <bwetherington@grokability.com>" LABEL maintainer="Brady Wetherington <bwetherington@grokability.com>"
# No need to add `apt-get clean` here, reference: # No need to add `apt-get clean` here, reference:
@ -14,16 +14,16 @@ RUN export DEBIAN_FRONTEND=noninteractive; \
apt-utils \ apt-utils \
apache2 \ apache2 \
apache2-bin \ apache2-bin \
libapache2-mod-php7.4 \ libapache2-mod-php8.1 \
php7.4-curl \ php8.1-curl \
php7.4-ldap \ php8.1-ldap \
php7.4-mysql \ php8.1-mysql \
php7.4-gd \ php8.1-gd \
php7.4-xml \ php8.1-xml \
php7.4-mbstring \ php8.1-mbstring \
php7.4-zip \ php8.1-zip \
php7.4-bcmath \ php8.1-bcmath \
php7.4-redis \ php8.1-redis \
php-memcached \ php-memcached \
patch \ patch \
curl \ curl \
@ -40,7 +40,7 @@ autoconf \
libc-dev \ libc-dev \
pkg-config \ pkg-config \
libmcrypt-dev \ libmcrypt-dev \
php7.4-dev \ php8.1-dev \
ca-certificates \ ca-certificates \
unzip \ unzip \
dnsutils \ dnsutils \
@ -50,16 +50,16 @@ dnsutils \
RUN curl -L -O https://github.com/pear/pearweb_phars/raw/master/go-pear.phar RUN curl -L -O https://github.com/pear/pearweb_phars/raw/master/go-pear.phar
RUN php go-pear.phar RUN php go-pear.phar
RUN pecl install mcrypt-1.0.3 RUN pecl install mcrypt
RUN bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so > /etc/php/7.4/mods-available/mcrypt.ini" RUN bash -c "echo extension=/usr/lib/php/20210902/mcrypt.so > /etc/php/8.1/mods-available/mcrypt.ini"
RUN phpenmod mcrypt RUN phpenmod mcrypt
RUN phpenmod gd RUN phpenmod gd
RUN phpenmod bcmath RUN phpenmod bcmath
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/apache2/php.ini RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/8.1/apache2/php.ini
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/cli/php.ini RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/8.1/cli/php.ini
RUN useradd -m --uid 1000 --gid 50 docker RUN useradd -m --uid 1000 --gid 50 docker

View file

@ -1,34 +1,34 @@
FROM alpine:3.14.2 FROM alpine:3.17.3
# Apache + PHP # Apache + PHP
RUN apk add --no-cache \ RUN apk add --no-cache \
apache2 \ apache2 \
php7 \ php81 \
php7-common \ php81-common \
php7-apache2 \ php81-apache2 \
php7-curl \ php81-curl \
php7-ldap \ php81-ldap \
php7-mysqli \ php81-mysqli \
php7-gd \ php81-gd \
php7-xml \ php81-xml \
php7-mbstring \ php81-mbstring \
php7-zip \ php81-zip \
php7-ctype \ php81-ctype \
php7-tokenizer \ php81-tokenizer \
php7-pdo_mysql \ php81-pdo_mysql \
php7-openssl \ php81-openssl \
php7-bcmath \ php81-bcmath \
php7-phar \ php81-phar \
php7-json \ php81-json \
php7-iconv \ php81-iconv \
php7-fileinfo \ php81-fileinfo \
php7-simplexml \ php81-simplexml \
php7-session \ php81-session \
php7-dom \ php81-dom \
php7-xmlwriter \ php81-xmlwriter \
php7-xmlreader \ php81-xmlreader \
php7-sodium \ php81-sodium \
php7-redis \ php81-redis \
php7-pecl-memcached \ php81-pecl-memcached \
curl \ curl \
wget \ wget \
vim \ vim \
@ -41,7 +41,7 @@ COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
# Where apache's PID lives # Where apache's PID lives
RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2 RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php7/php.ini RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php81/php.ini
COPY docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf COPY docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf
# Enable mod_rewrite # Enable mod_rewrite

View file

@ -1,8 +1,8 @@
ARG ENVIRONMENT=production ARG ENVIRONMENT=production
ARG SNIPEIT_RELEASE=5.1.3 ARG SNIPEIT_RELEASE=6.1.0
ARG PHP_VERSION=7.4.16 ARG PHP_VERSION=8.2
ARG PHP_ALPINE_VERSION=3.13 ARG PHP_ALPINE_VERSION=3.17
ARG COMPOSER_VERSION=2.0.11 ARG COMPOSER_VERSION=2
# Cannot use arguments with 'COPY --from' workaround # Cannot use arguments with 'COPY --from' workaround
# https://github.com/moby/moby/issues/34482#issuecomment-454716952 # https://github.com/moby/moby/issues/34482#issuecomment-454716952
@ -52,7 +52,7 @@ RUN { \
# Install php extensions inside docker containers easily # Install php extensions inside docker containers easily
# https://github.com/mlocati/docker-php-extension-installer # https://github.com/mlocati/docker-php-extension-installer
COPY --from=mlocati/php-extension-installer:1.2.19 /usr/bin/install-php-extensions /usr/local/bin/ COPY --from=mlocati/php-extension-installer:2.1.15 /usr/bin/install-php-extensions /usr/local/bin/
RUN set -eux; \ RUN set -eux; \
install-php-extensions \ install-php-extensions \
bcmath \ bcmath \

View file

@ -80,12 +80,9 @@ class AccessoriesController extends Controller
$accessories->where('notes','=',$request->input('notes')); $accessories->where('notes','=',$request->input('notes'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $accessories->count()) ? $accessories->count() : abs($request->input('offset'));
$offset = (($accessories) && ($request->get('offset') > $accessories->count())) ? $accessories->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort_override = $request->input('sort'); $sort_override = $request->input('sort');

View file

@ -55,12 +55,9 @@ class AssetMaintenancesController extends Controller
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $maintenances->count()) ? $maintenances->count() : abs($request->input('offset'));
$offset = (($maintenances) && ($request->get('offset') > $maintenances->count())) ? $maintenances->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$allowed_columns = [ $allowed_columns = [
'id', 'id',

View file

@ -78,12 +78,9 @@ class AssetModelsController extends Controller
$assetmodels->TextSearch($request->input('search')); $assetmodels->TextSearch($request->input('search'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $assetmodels->count()) ? $assetmodels->count() : abs($request->input('offset'));
$offset = (($assetmodels) && ($request->get('offset') > $assetmodels->count())) ? $assetmodels->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'models.created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'models.created_at';

View file

@ -199,13 +199,9 @@ class AssetsController extends Controller
$request->filled('order_number') ? $assets = $assets->where('assets.order_number', '=', e($request->get('order_number'))) : ''; $request->filled('order_number') ? $assets = $assets->where('assets.order_number', '=', e($request->get('order_number'))) : '';
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $assets->count()) ? $assets->count() : abs($request->input('offset'));
$offset = (($assets) && ($request->get('offset') > $assets->count())) ? $assets->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';

View file

@ -67,8 +67,6 @@ class CategoriesController extends Controller
$categories = $categories->withCount('showableAssets as assets_count'); $categories = $categories->withCount('showableAssets as assets_count');
} }
if ($request->filled('search')) { if ($request->filled('search')) {
$categories = $categories->TextSearch($request->input('search')); $categories = $categories->TextSearch($request->input('search'));
} }
@ -93,14 +91,9 @@ class CategoriesController extends Controller
$categories->where('checkin_email', '=', $request->input('checkin_email')); $categories->where('checkin_email', '=', $request->input('checkin_email'));
} }
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $categories->count()) ? $categories->count() : abs($request->input('offset'));
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// case we override with the actual count, so we should return 0 items.
$offset = (($categories) && ($request->get('offset') > $categories->count())) ? $categories->count() : $request->get('offset', 0);
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets_count'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets_count';

View file

@ -48,12 +48,10 @@ class CompaniesController extends Controller
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $companies->count()) ? $companies->count() : abs($request->input('offset'));
$offset = (($companies) && ($request->get('offset') > $companies->count())) ? $companies->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -72,14 +72,10 @@ class ComponentsController extends Controller
$components->where('notes','=',$request->input('notes')); $components->where('notes','=',$request->input('notes'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $components->count()) ? $components->count() : abs($request->input('offset'));
$offset = (($components) && ($request->get('offset') > $components->count())) ? $components->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort_override = $request->input('sort'); $sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at'; $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at';

View file

@ -84,12 +84,10 @@ class ConsumablesController extends Controller
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $consumables->count()) ? $consumables->count() : abs($request->input('offset'));
$offset = (($consumables) && ($request->get('offset') > $consumables->count())) ? $consumables->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$allowed_columns = ['id', 'name', 'order_number', 'min_amt', 'purchase_date', 'purchase_cost', 'company', 'category', 'model_number', 'item_no', 'manufacturer', 'location', 'qty', 'image']; $allowed_columns = ['id', 'name', 'order_number', 'min_amt', 'purchase_date', 'purchase_cost', 'company', 'category', 'model_number', 'item_no', 'manufacturer', 'location', 'qty', 'image'];
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';

View file

@ -58,12 +58,10 @@ class DepartmentsController extends Controller
$departments->where('location_id', '=', $request->input('location_id')); $departments->where('location_id', '=', $request->input('location_id'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $departments->count()) ? $departments->count() : abs($request->input('offset'));
$offset = (($departments) && ($request->get('offset') > $departments->count())) ? $departments->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -28,12 +28,10 @@ class DepreciationsController extends Controller
$depreciations = $depreciations->TextSearch($request->input('search')); $depreciations = $depreciations->TextSearch($request->input('search'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $depreciations->count()) ? $depreciations->count() : abs($request->input('offset'));
$offset = (($depreciations) && ($request->get('offset') > $depreciations->count())) ? $depreciations->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -35,12 +35,9 @@ class GroupsController extends Controller
$groups->where('name', '=', $request->input('name')); $groups->where('name', '=', $request->input('name'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $groups->count()) ? $groups->count() : abs($request->input('offset'));
$offset = (($groups) && ($request->get('offset') > $groups->count())) ? $groups->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -39,8 +39,10 @@ class LicenseSeatsController extends Controller
} }
$total = $seats->count(); $total = $seats->count();
$offset = (($seats) && (request('offset') >= $total)) ? 0 : request('offset', 0);
$limit = request('limit', 50); // Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $seats->count()) ? $seats->count() : abs($request->input('offset'));
$limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
$seats = $seats->skip($offset)->take($limit)->get(); $seats = $seats->skip($offset)->take($limit)->get();

View file

@ -94,12 +94,9 @@ class LicensesController extends Controller
$licenses->onlyTrashed(); $licenses->onlyTrashed();
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $licenses->count()) ? $licenses->count() : abs($request->input('offset'));
$offset = (($licenses) && ($request->get('offset') > $licenses->count())) ? $licenses->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';

View file

@ -78,14 +78,24 @@ class LocationsController extends Controller
$locations->where('locations.country', '=', $request->input('country')); $locations->where('locations.country', '=', $request->input('country'));
} }
$offset = (($locations) && (request('offset') > $locations->count())) ? $locations->count() : request('offset', 0); // Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $locations->count()) ? $locations->count() : abs($request->input('offset'));
// Check to make sure the limit is not higher than the max allowed $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
\Log::debug('Max in env: '.config('app.max_results'));
\Log::debug('Original requested offset: '.$request->input('offset'));
\Log::debug('Intval offset: '.intval($request->input('offset')));
\Log::debug('Modified offset: '.$offset);
\Log::debug('Original requested limit: '.$request->input('limit'));
\Log::debug('Intval limit: '.intval($request->input('limit')));
\Log::debug('Modified limit: '.$limit);
\Log::debug('Total results: '.$locations->count());
\Log::debug('------------------------------');
switch ($request->input('sort')) { switch ($request->input('sort')) {
case 'parent': case 'parent':
$locations->OrderParent($order); $locations->OrderParent($order);

View file

@ -57,12 +57,9 @@ class ManufacturersController extends Controller
$manufacturers->where('support_email', '=', $request->input('support_email')); $manufacturers->where('support_email', '=', $request->input('support_email'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $manufacturers->count()) ? $manufacturers->count() : abs($request->input('offset'));
$offset = (($manufacturers) && ($request->get('offset') > $manufacturers->count())) ? $manufacturers->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -29,8 +29,10 @@ class PredefinedKitsController extends Controller
$kits = $kits->TextSearch($request->input('search')); $kits = $kits->TextSearch($request->input('search'));
} }
$offset = $request->input('offset', 0); // Make sure the offset and limit are actually integers and do not exceed system limits
$limit = $request->input('limit', 50); $offset = ($request->input('offset') > $kits->count()) ? $kits->count() : abs($request->input('offset'));
$limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
$order = $request->input('order') === 'desc' ? 'desc' : 'asc'; $order = $request->input('order') === 'desc' ? 'desc' : 'asc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'name'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'name';
$kits->orderBy($sort, $order); $kits->orderBy($sort, $order);

View file

@ -54,15 +54,16 @@ class ReportsController extends Controller
'note', 'note',
]; ];
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $actionlogs->count()) ? $actionlogs->count() : abs($request->input('offset'));
$limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
$order = ($request->input('order') == 'asc') ? 'asc' : 'desc'; $order = ($request->input('order') == 'asc') ? 'asc' : 'desc';
$offset = request('offset', 0);
$total = $actionlogs->count(); $total = $actionlogs->count();
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get(); $actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get();
return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE); return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE);

View file

@ -50,12 +50,9 @@ class StatuslabelsController extends Controller
} }
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $statuslabels->count()) ? $statuslabels->count() : abs($request->input('offset'));
$offset = (($statuslabels) && ($request->get('offset') > $statuslabels->count())) ? $statuslabels->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -74,12 +74,10 @@ class SuppliersController extends Controller
$suppliers->where('notes', '=', $request->input('notes')); $suppliers->where('notes', '=', $request->input('notes'));
} }
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $suppliers->count()) ? $suppliers->count() : abs($request->input('offset'));
$offset = (($suppliers) && ($request->get('offset') > $suppliers->count())) ? $suppliers->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';

View file

@ -193,12 +193,10 @@ class UsersController extends Controller
$order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $order = $request->input('order') === 'asc' ? 'asc' : 'desc';
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // Make sure the offset and limit are actually integers and do not exceed system limits
// case we override with the actual count, so we should return 0 items. $offset = ($request->input('offset') > $users->count()) ? $users->count() : abs($request->input('offset'));
$offset = (($users) && ($request->get('offset') > $users->count())) ? $users->count() : $request->get('offset', 0); $limit = (abs($request->input('limit')) > config('app.max_results')) ? config('app.max_results') : abs($request->input('limit'));
// Check to make sure the limit is not higher than the max allowed
((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results');
switch ($request->input('sort')) { switch ($request->input('sort')) {

View file

@ -29,26 +29,26 @@ class AssetSeeder extends Seeder
$this->locationIds = Location::all()->pluck('id'); $this->locationIds = Location::all()->pluck('id');
$this->supplierIds = Supplier::all()->pluck('id'); $this->supplierIds = Supplier::all()->pluck('id');
Asset::factory()->count(1000)->laptopMbp()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(2000)->laptopMbp()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(50)->laptopMbpPending()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->laptopMbpPending()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(50)->laptopMbpArchived()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->laptopMbpArchived()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(50)->laptopAir()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->laptopAir()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(5)->laptopSurface()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->laptopSurface()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(5)->laptopXps()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(5)->laptopXps()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(5)->laptopSpectre()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(5)->laptopSpectre()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(5)->laptopZenbook()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->laptopZenbook()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(3)->laptopYoga()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(30)->laptopYoga()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(30)->desktopMacpro()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(30)->desktopMacpro()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(30)->desktopLenovoI5()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(30)->desktopLenovoI5()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(30)->desktopOptiplex()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(30)->desktopOptiplex()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(5)->confPolycom()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(50)->confPolycom()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(2)->confPolycomcx()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(20)->confPolycomcx()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(12)->tabletIpad()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(30)->tabletIpad()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(4)->tabletTab3()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(10)->tabletTab3()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(27)->phoneIphone11()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(27)->phoneIphone11()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(40)->phoneIphone12()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(40)->phoneIphone12()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(10)->ultrafine()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(20)->ultrafine()->state(new Sequence($this->getState()))->create();
Asset::factory()->count(10)->ultrasharp()->state(new Sequence($this->getState()))->create(); Asset::factory()->count(20)->ultrasharp()->state(new Sequence($this->getState()))->create();
$del_files = Storage::files('assets'); $del_files = Storage::files('assets');
foreach ($del_files as $del_file) { // iterate files foreach ($del_files as $del_file) { // iterate files

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Restoring from Backup', 'backups_restoring' => 'Restoring from Backup',
'backups_upload' => 'Upload Backup', 'backups_upload' => 'Upload Backup',
'backups_path' => 'Backups on the server are stored in <code>:path</code>', 'backups_path' => 'Backups on the server are stored in <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
'barcode_settings' => 'Barcode Settings', 'barcode_settings' => 'Barcode Settings',