mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Catch most exceptions.
This commit is contained in:
parent
62bba0d33b
commit
45e9c999b8
@ -33,6 +33,7 @@ use FireflyIII\Models\AccountType;
|
|||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Repositories\UserGroups\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\CleansChartData;
|
use FireflyIII\Support\Http\Api\CleansChartData;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Psr\Container\ContainerExceptionInterface;
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
@ -43,6 +44,7 @@ use Psr\Container\NotFoundExceptionInterface;
|
|||||||
class AccountController extends Controller
|
class AccountController extends Controller
|
||||||
{
|
{
|
||||||
use CleansChartData;
|
use CleansChartData;
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
private AccountRepositoryInterface $repository;
|
private AccountRepositoryInterface $repository;
|
||||||
|
|
||||||
@ -55,8 +57,11 @@ class AccountController extends Controller
|
|||||||
$this->middleware(
|
$this->middleware(
|
||||||
function ($request, $next) {
|
function ($request, $next) {
|
||||||
$this->repository = app(AccountRepositoryInterface::class);
|
$this->repository = app(AccountRepositoryInterface::class);
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.2');
|
$userGroup = $this->validateUserGroup($request);
|
||||||
$this->repository->setAdministrationId(auth()->user()->user_group_id);
|
if (null !== $userGroup) {
|
||||||
|
$this->repository->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -37,6 +37,7 @@ use FireflyIII\Repositories\UserGroups\Budget\OperationsRepositoryInterface;
|
|||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\CleansChartData;
|
use FireflyIII\Support\Http\Api\CleansChartData;
|
||||||
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
@ -47,6 +48,7 @@ use Illuminate\Support\Collection;
|
|||||||
class BudgetController extends Controller
|
class BudgetController extends Controller
|
||||||
{
|
{
|
||||||
use CleansChartData;
|
use CleansChartData;
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
protected OperationsRepositoryInterface $opsRepository;
|
protected OperationsRepositoryInterface $opsRepository;
|
||||||
private BudgetLimitRepositoryInterface $blRepository;
|
private BudgetLimitRepositoryInterface $blRepository;
|
||||||
@ -63,6 +65,13 @@ class BudgetController extends Controller
|
|||||||
$this->blRepository = app(BudgetLimitRepositoryInterface::class);
|
$this->blRepository = app(BudgetLimitRepositoryInterface::class);
|
||||||
$this->opsRepository = app(OperationsRepositoryInterface::class);
|
$this->opsRepository = app(OperationsRepositoryInterface::class);
|
||||||
$this->currency = app('amount')->getDefaultCurrency();
|
$this->currency = app('amount')->getDefaultCurrency();
|
||||||
|
|
||||||
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
|
$this->repository->setUserGroup($userGroup);
|
||||||
|
$this->opsRepository->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -78,15 +87,6 @@ class BudgetController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function dashboard(DateRequest $request): JsonResponse
|
public function dashboard(DateRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.3');
|
|
||||||
// get user.
|
|
||||||
/** @var User $user */
|
|
||||||
$user = auth()->user();
|
|
||||||
// group ID
|
|
||||||
$administrationId = $user->getAdministrationId();
|
|
||||||
$this->repository->setAdministrationId($administrationId);
|
|
||||||
$this->opsRepository->setAdministrationId($administrationId);
|
|
||||||
|
|
||||||
$params = $request->getAll();
|
$params = $request->getAll();
|
||||||
/** @var Carbon $start */
|
/** @var Carbon $start */
|
||||||
$start = $params['start'];
|
$start = $params['start'];
|
||||||
|
@ -36,6 +36,7 @@ use FireflyIII\Repositories\UserGroups\Account\AccountRepositoryInterface;
|
|||||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\CleansChartData;
|
use FireflyIII\Support\Http\Api\CleansChartData;
|
||||||
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,6 +45,7 @@ use Illuminate\Http\JsonResponse;
|
|||||||
class CategoryController extends Controller
|
class CategoryController extends Controller
|
||||||
{
|
{
|
||||||
use CleansChartData;
|
use CleansChartData;
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
private AccountRepositoryInterface $accountRepos;
|
private AccountRepositoryInterface $accountRepos;
|
||||||
private CurrencyRepositoryInterface $currencyRepos;
|
private CurrencyRepositoryInterface $currencyRepos;
|
||||||
@ -53,10 +55,12 @@ class CategoryController extends Controller
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->middleware(
|
$this->middleware(
|
||||||
function ($request, $next) {
|
function ($request, $next) {
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.4');
|
|
||||||
$this->accountRepos = app(AccountRepositoryInterface::class);
|
$this->accountRepos = app(AccountRepositoryInterface::class);
|
||||||
$this->currencyRepos = app(CurrencyRepositoryInterface::class);
|
$this->currencyRepos = app(CurrencyRepositoryInterface::class);
|
||||||
$this->accountRepos->setAdministrationId(auth()->user()->user_group_id);
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
|
$this->accountRepos->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -29,6 +29,7 @@ use FireflyIII\Api\V2\Controllers\Controller;
|
|||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Repositories\UserGroups\Bill\BillRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\Bill\BillRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Transformers\V2\AccountTransformer;
|
use FireflyIII\Transformers\V2\AccountTransformer;
|
||||||
use FireflyIII\Transformers\V2\BillTransformer;
|
use FireflyIII\Transformers\V2\BillTransformer;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@ -40,6 +41,8 @@ use Illuminate\Pagination\LengthAwarePaginator;
|
|||||||
*/
|
*/
|
||||||
class ShowController extends Controller
|
class ShowController extends Controller
|
||||||
{
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
private BillRepositoryInterface $repository;
|
private BillRepositoryInterface $repository;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
@ -47,9 +50,13 @@ class ShowController extends Controller
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->middleware(
|
$this->middleware(
|
||||||
function ($request, $next) {
|
function ($request, $next) {
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.5');
|
|
||||||
$this->repository = app(BillRepositoryInterface::class);
|
$this->repository = app(BillRepositoryInterface::class);
|
||||||
$this->repository->setAdministrationId(auth()->user()->user_group_id);
|
|
||||||
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
|
$this->repository->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -28,6 +28,7 @@ namespace FireflyIII\Api\V2\Controllers\Model\PiggyBank;
|
|||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Transformers\V2\PiggyBankTransformer;
|
use FireflyIII\Transformers\V2\PiggyBankTransformer;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@ -38,6 +39,8 @@ use Illuminate\Pagination\LengthAwarePaginator;
|
|||||||
*/
|
*/
|
||||||
class ShowController extends Controller
|
class ShowController extends Controller
|
||||||
{
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
private PiggyBankRepositoryInterface $repository;
|
private PiggyBankRepositoryInterface $repository;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
@ -45,9 +48,13 @@ class ShowController extends Controller
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->middleware(
|
$this->middleware(
|
||||||
function ($request, $next) {
|
function ($request, $next) {
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.8');
|
|
||||||
$this->repository = app(PiggyBankRepositoryInterface::class);
|
$this->repository = app(PiggyBankRepositoryInterface::class);
|
||||||
$this->repository->setAdministrationId(auth()->user()->user_group_id);
|
|
||||||
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
|
$this->repository->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -43,6 +43,7 @@ use FireflyIII\Repositories\UserGroups\Budget\BudgetRepositoryInterface;
|
|||||||
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
@ -51,6 +52,8 @@ use Illuminate\Http\JsonResponse;
|
|||||||
*/
|
*/
|
||||||
class BasicController extends Controller
|
class BasicController extends Controller
|
||||||
{
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
private AvailableBudgetRepositoryInterface $abRepository;
|
private AvailableBudgetRepositoryInterface $abRepository;
|
||||||
private AccountRepositoryInterface $accountRepository;
|
private AccountRepositoryInterface $accountRepository;
|
||||||
private BillRepositoryInterface $billRepository;
|
private BillRepositoryInterface $billRepository;
|
||||||
@ -68,8 +71,6 @@ class BasicController extends Controller
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->middleware(
|
$this->middleware(
|
||||||
function ($request, $next) {
|
function ($request, $next) {
|
||||||
/** @var User $user */
|
|
||||||
$user = auth()->user();
|
|
||||||
$this->abRepository = app(AvailableBudgetRepositoryInterface::class);
|
$this->abRepository = app(AvailableBudgetRepositoryInterface::class);
|
||||||
$this->accountRepository = app(AccountRepositoryInterface::class);
|
$this->accountRepository = app(AccountRepositoryInterface::class);
|
||||||
$this->billRepository = app(BillRepositoryInterface::class);
|
$this->billRepository = app(BillRepositoryInterface::class);
|
||||||
@ -77,14 +78,14 @@ class BasicController extends Controller
|
|||||||
$this->currencyRepos = app(CurrencyRepositoryInterface::class);
|
$this->currencyRepos = app(CurrencyRepositoryInterface::class);
|
||||||
$this->opsRepository = app(OperationsRepositoryInterface::class);
|
$this->opsRepository = app(OperationsRepositoryInterface::class);
|
||||||
|
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.9');
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
$this->abRepository->setAdministrationId($user->user_group_id);
|
$this->abRepository->setUserGroup($userGroup);
|
||||||
$this->accountRepository->setAdministrationId($user->user_group_id);
|
$this->accountRepository->setUserGroup($userGroup);
|
||||||
$this->billRepository->setAdministrationId($user->user_group_id);
|
$this->billRepository->setUserGroup($userGroup);
|
||||||
$this->budgetRepository->setAdministrationId($user->user_group_id);
|
$this->budgetRepository->setUserGroup($userGroup);
|
||||||
$this->currencyRepos->setUser($user);
|
$this->opsRepository->setUserGroup($userGroup);
|
||||||
$this->opsRepository->setAdministrationId($user->user_group_id);
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,7 @@ class NetWorth implements NetWorthInterface
|
|||||||
{
|
{
|
||||||
$this->userGroup = $userGroup;
|
$this->userGroup = $userGroup;
|
||||||
$this->adminAccountRepository = app(AdminAccountRepositoryInterface::class);
|
$this->adminAccountRepository = app(AdminAccountRepositoryInterface::class);
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.A');
|
$this->adminAccountRepository->setUserGroup($userGroup);
|
||||||
$this->adminAccountRepository->setAdministrationId($userGroup->id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -23,21 +23,20 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Providers;
|
namespace FireflyIII\Providers;
|
||||||
|
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Repositories\Budget\AvailableBudgetRepository;
|
use FireflyIII\Repositories\Budget\AvailableBudgetRepository;
|
||||||
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\AvailableBudgetRepository as AdminAbRepository;
|
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\AvailableBudgetRepositoryInterface as AdminAbRepositoryInterface;
|
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepository;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepository;
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepository;
|
use FireflyIII\Repositories\Budget\BudgetRepository;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\BudgetRepository as AdminBudgetRepository;
|
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\BudgetRepositoryInterface as AdminBudgetRepositoryInterface;
|
|
||||||
use FireflyIII\Repositories\Budget\NoBudgetRepository;
|
use FireflyIII\Repositories\Budget\NoBudgetRepository;
|
||||||
use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Budget\OperationsRepository;
|
use FireflyIII\Repositories\Budget\OperationsRepository;
|
||||||
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
|
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Budget\AvailableBudgetRepository as AdminAbRepository;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Budget\AvailableBudgetRepositoryInterface as AdminAbRepositoryInterface;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Budget\BudgetRepository as AdminBudgetRepository;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Budget\BudgetRepositoryInterface as AdminBudgetRepositoryInterface;
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepository as AdminOperationsRepository;
|
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepository as AdminOperationsRepository;
|
||||||
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepositoryInterface as AdminOperationsRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\Budget\OperationsRepositoryInterface as AdminOperationsRepositoryInterface;
|
||||||
use Illuminate\Foundation\Application;
|
use Illuminate\Foundation\Application;
|
||||||
@ -79,8 +78,6 @@ class BudgetServiceProvider extends ServiceProvider
|
|||||||
$repository = app(AdminBudgetRepository::class);
|
$repository = app(AdminBudgetRepository::class);
|
||||||
if ($app->auth->check()) { // @phpstan-ignore-line
|
if ($app->auth->check()) { // @phpstan-ignore-line
|
||||||
$repository->setUser(auth()->user());
|
$repository->setUser(auth()->user());
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.C');
|
|
||||||
$repository->setAdministrationId(auth()->user()->user_group_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $repository;
|
return $repository;
|
||||||
@ -109,8 +106,6 @@ class BudgetServiceProvider extends ServiceProvider
|
|||||||
$repository = app(AdminAbRepository::class);
|
$repository = app(AdminAbRepository::class);
|
||||||
if ($app->auth->check()) { // @phpstan-ignore-line
|
if ($app->auth->check()) { // @phpstan-ignore-line
|
||||||
$repository->setUser(auth()->user());
|
$repository->setUser(auth()->user());
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.D');
|
|
||||||
$repository->setAdministrationId(auth()->user()->user_group_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $repository;
|
return $repository;
|
||||||
@ -165,8 +160,6 @@ class BudgetServiceProvider extends ServiceProvider
|
|||||||
$repository = app(AdminOperationsRepository::class);
|
$repository = app(AdminOperationsRepository::class);
|
||||||
if ($app->auth->check()) { // @phpstan-ignore-line
|
if ($app->auth->check()) { // @phpstan-ignore-line
|
||||||
$repository->setUser(auth()->user());
|
$repository->setUser(auth()->user());
|
||||||
throw new FireflyException('uses old administration ID check, needs to be updated.E');
|
|
||||||
$repository->setAdministrationId(auth()->user()->user_group_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $repository;
|
return $repository;
|
||||||
|
65
app/Support/Http/Api/ValidatesUserGroupTrait.php
Normal file
65
app/Support/Http/Api/ValidatesUserGroupTrait.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* ValidatesUserGroupTrait.php
|
||||||
|
* Copyright (c) 2023 james@firefly-iii.org
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Support\Http\Api;
|
||||||
|
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
|
use FireflyIII\Models\GroupMembership;
|
||||||
|
use FireflyIII\Models\UserGroup;
|
||||||
|
use FireflyIII\User;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
trait ValidatesUserGroupTrait
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This check does not validate which rights the user has, that comes later.
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
*
|
||||||
|
* @return UserGroup|null
|
||||||
|
* @throws FireflyException
|
||||||
|
*/
|
||||||
|
protected function validateUserGroup(Request $request): ?UserGroup
|
||||||
|
{
|
||||||
|
if (!auth()->check()) {
|
||||||
|
app('log')->debug('validateUserGroup: user is not logged in, return NULL.');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/** @var User $user */
|
||||||
|
$user = auth()->user();
|
||||||
|
if (!$request->has('user_group_id')) {
|
||||||
|
$group = $user->userGroup;
|
||||||
|
app('log')->debug(sprintf('validateUserGroup: no user group submitted, return default group #%d.', $group->id));
|
||||||
|
return $group;
|
||||||
|
}
|
||||||
|
$groupId = (int)$request->get('user_group_id');
|
||||||
|
/** @var GroupMembership|null $membership */
|
||||||
|
$membership = $user->groupMemberships()->where('user_group_id', $groupId)->first();
|
||||||
|
if (null === $membership) {
|
||||||
|
app('log')->debug('validateUserGroup: user has no access to this group.');
|
||||||
|
throw new FireflyException((string)trans('validation.belongs_user_or_user_group'));
|
||||||
|
}
|
||||||
|
app('log')->debug(sprintf('validateUserGroup: user has role "%s" in group #%d.', $membership->userRole->title, $membership->userGroup->id));
|
||||||
|
return $membership->userGroup;
|
||||||
|
}
|
||||||
|
}
|
216
resources/views/v2/transactions/create.blade.php
Normal file
216
resources/views/v2/transactions/create.blade.php
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
@extends('layout.v2')
|
||||||
|
@section('vite')
|
||||||
|
@vite(['resources/assets/v2/sass/app.scss', 'resources/assets/v2/pages/transactions/create.js'])
|
||||||
|
@endsection
|
||||||
|
@section('content')
|
||||||
|
<div class="app-content">
|
||||||
|
<!--begin::Container-->
|
||||||
|
<div class="container-fluid" x-data="transactions">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col">
|
||||||
|
<template x-if="showSuccessMessage">
|
||||||
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||||
|
A simple success alert with <a href="#" class="alert-link">an example link</a>. Give it a
|
||||||
|
click
|
||||||
|
if you like.
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template x-if="showErrorMessage">
|
||||||
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||||
|
A simple ERROR alert with <a href="#" class="alert-link">an example link</a>. Give it a
|
||||||
|
click
|
||||||
|
if you like.
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<ul class="nav nav-tabs" id="splitTabs" role="tablist">
|
||||||
|
<template x-for="transaction,index in entries">
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button :id="'split-'+index+'-tab'"
|
||||||
|
:class="{'nav-link': true, 'active': index === 0 }"
|
||||||
|
data-bs-toggle="tab"
|
||||||
|
:data-bs-target="'#split-'+index+'-pane'"
|
||||||
|
type="button" role="tab"
|
||||||
|
:aria-controls="'split-'+index+'-pane'"
|
||||||
|
aria-selected="true">Split #
|
||||||
|
<span x-text="index"></span>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" type="button" role="tab" @click="addSplit()"
|
||||||
|
><em class="fa-solid fa-plus-circle"></em>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link disabled" aria-disabled="true">
|
||||||
|
Total:
|
||||||
|
<span x-text="formattedTotalAmount()"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab-content" id="splitTabsContent">
|
||||||
|
<template x-for="transaction,index in entries">
|
||||||
|
<div
|
||||||
|
:class="{'tab-pane fade pt-2':true, 'show active': index ===0}"
|
||||||
|
:id="'split-'+index+'-pane'"
|
||||||
|
role="tabpanel"
|
||||||
|
:aria-labelledby="'split-'+index+'-tab'"
|
||||||
|
tabindex="0">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-xl-6 col-lg-6 col-md-12 col-xs-12 mb-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">{{ __('firefly.basic_journal_information') }}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="description_0"
|
||||||
|
class="col-sm-1 col-form-label d-none d-sm-block">
|
||||||
|
<em class="fa-solid fa-font"></em>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="autocomplete form-control"
|
||||||
|
:id="'description_' + index"
|
||||||
|
x-model="transaction.description"
|
||||||
|
placeholder="Transaction description">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="source_0" class="col-sm-1 col-form-label d-none d-sm-block">
|
||||||
|
<i class="fa-solid fa-arrow-right"></i>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="source_0"
|
||||||
|
x-model="transaction.source_account.name"
|
||||||
|
placeholder="Source account">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="dest_0" class="col-sm-1 col-form-label d-none d-sm-block">
|
||||||
|
<i class="fa-solid fa-arrow-left"></i>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="dest_0"
|
||||||
|
x-model="transaction.destination_account.name"
|
||||||
|
placeholder="Destination account">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="date_0" class="col-sm-1 col-form-label d-none d-sm-block">
|
||||||
|
<i class="fa-solid fa-calendar"></i>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="datetime-local" class="form-control" id="date_0"
|
||||||
|
x-model="transaction.date"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-6 col-lg-6 col-md-12 col-xs-12 mb-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ __('firefly.transaction_journal_amount') }}
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="dest_0" class="col-sm-1 col-form-label d-none d-sm-block">
|
||||||
|
EUR
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="number" step="any" min="0" class="form-control" id="amount"
|
||||||
|
x-model="transaction.amount"
|
||||||
|
placeholder="Amount">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
amount card
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ __('firefly.transaction_journal_meta') }}
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
important meta info card
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
important meta info card
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ __('firefly.transaction_journal_extra') }}
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
Less important meta
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
Less important meta
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ __('firefly.submission_options') }}
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
submission options
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
submission options
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<template x-if="0 !== index">
|
||||||
|
<button class="btn btn-danger" @click="removeSplit(index)">Remove this split
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
<button class="btn btn-info">Add another split</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col text-end">
|
||||||
|
<button class="btn btn-success" @click="submitTransaction()">Submit</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
Loading…
Reference in New Issue
Block a user