diff --git a/app/Http/Controllers/LedgerController.php b/app/Http/Controllers/LedgerController.php new file mode 100644 index 0000000..b1bd75c --- /dev/null +++ b/app/Http/Controllers/LedgerController.php @@ -0,0 +1,77 @@ +ledgers()->create($request->validated()); + + return redirect()->route('dynamics.show', $dynamic); + } + + /** + * Display the specified resource. + */ + public function show(Dynamic $dynamic, Ledger $ledger) + { + $this->authorize('view', $ledger); + + $ledger->load('mutations.user'); + + return Inertia::render('Ledgers/Show', [ + 'dynamic' => $dynamic, + 'ledger' => $ledger, + ]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Ledger $ledger) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Ledger $ledger) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Ledger $ledger) + { + // + } +} diff --git a/app/Http/Requests/StoreLedgerRequest.php b/app/Http/Requests/StoreLedgerRequest.php new file mode 100644 index 0000000..81bd29a --- /dev/null +++ b/app/Http/Requests/StoreLedgerRequest.php @@ -0,0 +1,35 @@ +route('dynamic'); + + return $dynamic && $this->user()->can('view', $dynamic); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'name' => ['required', 'string', 'max:255'], + 'rules' => ['nullable', 'string'], + ]; + } +} diff --git a/app/Policies/LedgerPolicy.php b/app/Policies/LedgerPolicy.php new file mode 100644 index 0000000..8b1f66e --- /dev/null +++ b/app/Policies/LedgerPolicy.php @@ -0,0 +1,66 @@ +can('view', $dynamic); + } + + /** + * Determine whether the user can view the model. + */ + public function view(User $user, Ledger $ledger): bool + { + return $user->can('view', $ledger->dynamic); + } + + /** + * Determine whether the user can create models. + */ + public function create(User $user, Dynamic $dynamic): bool + { + return $user->can('view', $dynamic); + } + + /** + * Determine whether the user can update the model. + */ + public function update(User $user, Ledger $ledger): bool + { + return false; + } + + /** + * Determine whether the user can delete the model. + */ + public function delete(User $user, Ledger $ledger): bool + { + return false; + } + + /** + * Determine whether the user can restore the model. + */ + public function restore(User $user, Ledger $ledger): bool + { + return false; + } + + /** + * Determine whether the user can permanently delete the model. + */ + public function forceDelete(User $user, Ledger $ledger): bool + { + return false; + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index edfd3ff..d20c227 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -3,7 +3,9 @@ namespace App\Providers; use App\Models\Dynamic; +use App\Models\Ledger; use App\Policies\DynamicPolicy; +use App\Policies\LedgerPolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider @@ -15,6 +17,7 @@ class AuthServiceProvider extends ServiceProvider */ protected $policies = [ Dynamic::class => DynamicPolicy::class, + Ledger::class => LedgerPolicy::class, ]; /** diff --git a/resources/js/pages/Dynamics/Show.vue b/resources/js/pages/Dynamics/Show.vue index a085aca..f84464c 100644 --- a/resources/js/pages/Dynamics/Show.vue +++ b/resources/js/pages/Dynamics/Show.vue @@ -1,6 +1,6 @@