From 76a41fec5067ec07760df2ba3c6b6af8e8254fa8 Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 2 Aug 2024 13:45:41 +0200 Subject: [PATCH] New API stuff --- app/JsonApi/V2/Accounts/AccountRepository.php | 5 +++- app/JsonApi/V2/Accounts/AccountRequest.php | 24 +++++++++++++++++++ .../V2/Accounts/Capabilities/CrudAccount.php | 4 ++++ app/Policies/AccountPolicy.php | 2 ++ routes/api.php | 2 +- 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 app/JsonApi/V2/Accounts/AccountRequest.php diff --git a/app/JsonApi/V2/Accounts/AccountRepository.php b/app/JsonApi/V2/Accounts/AccountRepository.php index 0bc4c50fb7..98bc73cc24 100644 --- a/app/JsonApi/V2/Accounts/AccountRepository.php +++ b/app/JsonApi/V2/Accounts/AccountRepository.php @@ -27,6 +27,7 @@ use FireflyIII\Models\Account; use FireflyIII\Support\JsonApi\Concerns\UsergroupAware; use FireflyIII\Support\JsonApi\Enrichments\AccountEnrichment; use Illuminate\Support\Facades\Log; +use LaravelJsonApi\Contracts\Store\CreatesResources; use LaravelJsonApi\Contracts\Store\QueriesAll; use LaravelJsonApi\NonEloquent\AbstractRepository; use LaravelJsonApi\NonEloquent\Capabilities\CrudRelations; @@ -43,12 +44,14 @@ use LaravelJsonApi\NonEloquent\Concerns\HasRelationsCapability; * This is necessary because the user can't just query all accounts (it would return other user's data) * and because we also need to collect all kinds of metadata, like the currency and user info. */ -class AccountRepository extends AbstractRepository implements QueriesAll +class AccountRepository extends AbstractRepository implements QueriesAll, CreatesResources { use HasCrudCapability; use HasRelationsCapability; use UsergroupAware; + + /** * SiteRepository constructor. */ diff --git a/app/JsonApi/V2/Accounts/AccountRequest.php b/app/JsonApi/V2/Accounts/AccountRequest.php new file mode 100644 index 0000000000..dfcca68373 --- /dev/null +++ b/app/JsonApi/V2/Accounts/AccountRequest.php @@ -0,0 +1,24 @@ +enrichSingle($account); } + + public function create(array $validatedData): Account { + die('here we are'); + } } diff --git a/app/Policies/AccountPolicy.php b/app/Policies/AccountPolicy.php index 0503d9566b..9820911f1c 100644 --- a/app/Policies/AccountPolicy.php +++ b/app/Policies/AccountPolicy.php @@ -33,6 +33,7 @@ class AccountPolicy */ public function view(User $user, Account $account): bool { + die('OK'); return true; return auth()->check() && $user->id === $account->user_id; @@ -45,6 +46,7 @@ class AccountPolicy */ public function viewAny(): bool { + die('OK'); return true; return auth()->check(); diff --git a/routes/api.php b/routes/api.php index 935c77d6e5..e64211bebf 100644 --- a/routes/api.php +++ b/routes/api.php @@ -243,7 +243,7 @@ Route::group( JsonApiRoute::server('v2')->prefix('v2') ->resources(function (ResourceRegistrar $server): void { // ACCOUNTS - $server->resource('accounts', AccountController::class)->readOnly()->relationships(function (Relationships $relations): void { + $server->resource('accounts', AccountController::class)->relationships(function (Relationships $relations): void { $relations->hasOne('user')->readOnly(); }); // $server->resource('accounts', AccountController::class)->readOnly();