diff --git a/app/Http/Controllers/Transaction/LinkController.php b/app/Http/Controllers/Transaction/LinkController.php index 10190ce489..8aaa065c0f 100644 --- a/app/Http/Controllers/Transaction/LinkController.php +++ b/app/Http/Controllers/Transaction/LinkController.php @@ -30,6 +30,7 @@ use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface; use Illuminate\Contracts\View\Factory; use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; use Illuminate\Routing\Redirector; use Illuminate\View\View; use Log; @@ -157,9 +158,10 @@ class LinkController extends Controller * * @return RedirectResponse|Redirector */ - public function switchLink(TransactionJournalLink $link) + public function switchLink(Request $request) { - $this->repository->switchLink($link); + $linkId = (int)$request->get('id'); + $this->repository->switchLinkById($linkId); return redirect(app('steam')->getSafePreviousUrl()); } diff --git a/app/Repositories/LinkType/LinkTypeRepository.php b/app/Repositories/LinkType/LinkTypeRepository.php index 1b43ef17af..89f9d4511c 100644 --- a/app/Repositories/LinkType/LinkTypeRepository.php +++ b/app/Repositories/LinkType/LinkTypeRepository.php @@ -389,4 +389,21 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface return TransactionJournalLink::whereDestinationId($two->id)->whereSourceId($one->id)->first(); } + + /** + * @inheritDoc + */ + public function switchLinkById(int $linkId): bool + { + /** @var TransactionJournalLink $link */ + $link = TransactionJournalLink::find($linkId); + if (null !== $link) { + + if ($link->source->user->id === $this->user->id) { + $this->switchLink($link); + } + } + + return true; + } } diff --git a/app/Repositories/LinkType/LinkTypeRepositoryInterface.php b/app/Repositories/LinkType/LinkTypeRepositoryInterface.php index 17ce2decea..2898350046 100644 --- a/app/Repositories/LinkType/LinkTypeRepositoryInterface.php +++ b/app/Repositories/LinkType/LinkTypeRepositoryInterface.php @@ -154,6 +154,13 @@ interface LinkTypeRepositoryInterface */ public function switchLink(TransactionJournalLink $link): bool; + /** + * @param int $linkId + * + * @return bool + */ + public function switchLinkById(int $linkId): bool; + /** * @param LinkType $linkType * @param array $data diff --git a/resources/views/v1/admin/link/show.twig b/resources/views/v1/admin/link/show.twig index 652c2b4ac6..72840d920c 100644 --- a/resources/views/v1/admin/link/show.twig +++ b/resources/views/v1/admin/link/show.twig @@ -27,8 +27,8 @@
- {% endif %} diff --git a/resources/views/v1/transactions/show.twig b/resources/views/v1/transactions/show.twig index f00d0303bd..ce50940d90 100644 --- a/resources/views/v1/transactions/show.twig +++ b/resources/views/v1/transactions/show.twig @@ -357,7 +357,7 @@