diff --git a/app/Http/routes.php b/app/Http/routes.php index 0bb2848285..01fb4e9160 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -12,179 +12,6 @@ use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionJournal; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -// budget list -Route::bind( - 'budgetList', - function ($value) { - if (Auth::check()) { - $ids = explode(',', $value); - /** @var \Illuminate\Support\Collection $object */ - $object = Budget::where('active', 1) - ->whereIn('id', $ids) - ->where('user_id', Auth::user()->id) - ->get(); - - // add empty budget if applicable. - if (in_array('0', $ids)) { - $object->push(new Budget); - } - - if ($object->count() > 0) { - return $object; - } - } - throw new NotFoundHttpException; - } -); - -// category list -Route::bind( - 'categoryList', - function ($value) { - if (Auth::check()) { - $ids = explode(',', $value); - /** @var \Illuminate\Support\Collection $object */ - $object = Category::whereIn('id', $ids) - ->where('user_id', Auth::user()->id) - ->get(); - - // add empty budget if applicable. - if (in_array('0', $ids)) { - $object->push(new Category); - } - - if ($object->count() > 0) { - return $object; - } - } - throw new NotFoundHttpException; - } -); - -Route::bind( - 'tj', function ($value) { - if (Auth::check()) { - $object = TransactionJournal::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'attachment', function ($value) { - if (Auth::check()) { - $object = Attachment::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'currency', function ($value) { - if (Auth::check()) { - $object = TransactionCurrency::find($value); - if ($object) { - return $object; - } - } - throw new NotFoundHttpException; -} -); - -Route::bind( - 'bill', function ($value) { - if (Auth::check()) { - $object = Bill::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'budget', function ($value) { - if (Auth::check()) { - $object = Budget::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'limitrepetition', function ($value) { - if (Auth::check()) { - $object = LimitRepetition::where('limit_repetitions.id', $value) - ->leftjoin('budget_limits', 'budget_limits.id', '=', 'limit_repetitions.budget_limit_id') - ->leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id') - ->where('budgets.user_id', Auth::user()->id) - ->first(['limit_repetitions.*']); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'piggyBank', function ($value) { - if (Auth::check()) { - $object = PiggyBank::where('piggy_banks.id', $value) - ->leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.account_id') - ->where('accounts.user_id', Auth::user()->id) - ->first(['piggy_banks.*']); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'category', function ($value) { - if (Auth::check()) { - $object = Category::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - -Route::bind( - 'tag', function ($value) { - if (Auth::check()) { - $object = Tag::where('id', $value)->where('user_id', Auth::user()->id)->first(); - if ($object) { - return $object; - } - } - - throw new NotFoundHttpException; -} -); - - // auth routes, i think Route::group( ['middleware' => 'web'], function () { diff --git a/app/Models/Bill.php b/app/Models/Bill.php index c148f88a10..79cf30bbfe 100644 --- a/app/Models/Bill.php +++ b/app/Models/Bill.php @@ -1,10 +1,12 @@ user_id == Auth::user()->id) { + return $value; + } + } + throw new NotFoundHttpException; + } + + } diff --git a/app/Models/Budget.php b/app/Models/Budget.php index 26f085a118..4000306a2c 100644 --- a/app/Models/Budget.php +++ b/app/Models/Budget.php @@ -1,11 +1,13 @@ belongsTo('FireflyIII\User'); } + public static function routeBinder(Budget $value) + { + if (Auth::check()) { + if ($value->user_id == Auth::user()->id) { + return $value; + } + } + throw new NotFoundHttpException; + } + } diff --git a/app/Models/Category.php b/app/Models/Category.php index 4ddb31a7a7..cca73fe416 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -1,11 +1,13 @@ belongsTo('FireflyIII\User'); } + public static function routeBinder(Category $value) + { + if (Auth::check()) { + if ($value->user_id == Auth::user()->id) { + return $value; + } + } + throw new NotFoundHttpException; + } + } diff --git a/app/Models/LimitRepetition.php b/app/Models/LimitRepetition.php index 4009e6479b..bd91fbf8a6 100644 --- a/app/Models/LimitRepetition.php +++ b/app/Models/LimitRepetition.php @@ -1,7 +1,9 @@ attributes['amount'] = strval(round($value, 2)); } + + public static function routeBinder($value) + { + if (Auth::check()) { + $object = LimitRepetition::where('limit_repetitions.id', $value) + ->leftjoin('budget_limits', 'budget_limits.id', '=', 'limit_repetitions.budget_limit_id') + ->leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id') + ->where('budgets.user_id', Auth::user()->id) + ->first(['limit_repetitions.*']); + if ($object) { + return $object; + } + } + throw new NotFoundHttpException; + } + } diff --git a/app/Models/PiggyBank.php b/app/Models/PiggyBank.php index d4e9e7c44b..b4bcab8036 100644 --- a/app/Models/PiggyBank.php +++ b/app/Models/PiggyBank.php @@ -1,10 +1,12 @@ attributes['targetamount'] = strval(round($value, 2)); } + + public static function routeBinder(PiggyBank $value) + { + if (Auth::check()) { + if ($value->account->user_id == Auth::user()->id) { + return $value; + } + } + throw new NotFoundHttpException; + } } diff --git a/app/Models/Tag.php b/app/Models/Tag.php index d1bd328143..f9aa51a1a0 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -2,11 +2,13 @@ namespace FireflyIII\Models; +use Auth; use Carbon\Carbon; use Crypt; use FireflyIII\User; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Watson\Validating\ValidatingTrait; /** @@ -166,4 +168,17 @@ class Tag extends Model { return $this->belongsTo('FireflyIII\User'); } + + + public static function routeBinder(Tag $value) + { + if (Auth::check()) { + if ($value->user_id == Auth::user()->id) { + return $value; + } + } + throw new NotFoundHttpException; + } + + } diff --git a/app/Models/TransactionCurrency.php b/app/Models/TransactionCurrency.php index bd9b6db6ad..168bfb9bf5 100644 --- a/app/Models/TransactionCurrency.php +++ b/app/Models/TransactionCurrency.php @@ -1,9 +1,11 @@ hasMany('FireflyIII\Models\TransactionJournal'); } + + /** + * @param TransactionCurrency $currency + */ + public static function routeBinder(TransactionCurrency $currency) + { + if (Auth::check()) { + return $currency; + } + throw new NotFoundHttpException; + } } diff --git a/app/Support/Domain.php b/app/Support/Domain.php index 198a08bbc6..7cdd39625c 100644 --- a/app/Support/Domain.php +++ b/app/Support/Domain.php @@ -28,7 +28,7 @@ class Domain 'bill' => 'FireflyIII\Models\Bill', 'budget' => 'FireflyIII\Models\Budget', 'category' => 'FireflyIII\Models\Category', - 'currency' => 'FireflyIII\Models\Currency', + 'currency' => 'FireflyIII\Models\TransactionCurrency', 'limitrepetition' => 'FireflyIII\Models\LimitRepetition', 'piggyBank' => 'FireflyIII\Models\PiggyBank', 'tj' => 'FireflyIII\Models\TransactionJournal',