| @@ -15,8 +15,9 @@ | ||
| 15 | 15 | use FluentCart\App\Http\Controllers\DataBackfillController; |
| 16 | 16 | use FluentCart\App\Http\Controllers\EmailNotificationController; |
| 17 | 17 | use FluentCart\App\Http\Controllers\FileUploadController; |
| 18 | 18 | use FluentCart\App\Http\Controllers\IntegrationController; |
| 19 | +use FluentCart\App\Http\Controllers\RenewalController; | |
| 19 | 20 | use FluentCart\App\Http\Controllers\LabelController; |
| 20 | 21 | use FluentCart\App\Http\Controllers\McpSettingsController; |
| 21 | 22 | use FluentCart\App\Http\Controllers\ModuleSettingsController; |
| 22 | 23 | use FluentCart\App\Http\Controllers\NotesController; |
| @@ -552,9 +553,9 @@ | ||
| 552 | 553 | 'permissions' => 'orders/create' |
| 553 | 554 | ]); |
| 554 | 555 | |
| 555 | 556 | $router->post('/do-bulk-action', [OrderController::class, 'handleBulkActions'])->meta([ |
| 556 | - 'permissions' => 'orders/manage' | |
| 557 | + 'permissions' => 'orders/delete' // every accepted action deletes orders — same gate as DELETE /{order_id} | |
| 557 | 558 | ]); |
| 558 | 559 | |
| 559 | 560 | $router->post('/{order}/mark-as-paid', [OrderController::class, 'markAsPaid'])->meta([ |
| 560 | 561 | 'permissions' => 'orders/manage' |
| @@ -609,11 +610,13 @@ | ||
| 609 | 610 | $router->post('/{order}/transactions/{transaction_id}/accept-dispute/', [OrderController::class, 'acceptDispute'])->meta([ |
| 610 | 611 | 'permissions' => 'orders/manage' |
| 611 | 612 | ]); |
| 612 | 613 | |
| 613 | - $router->get('/{id}/transactions/{transaction_id}', [OrderController::class, 'getDetails'])->meta([ | |
| 614 | - 'permissions' => 'orders/view' | |
| 615 | - ]); | |
| 614 | + $router->get('/{id}/transactions/{transaction_id}', [OrderController::class, 'getTransactionDetails']) | |
| 615 | + ->int('id', 'transaction_id') | |
| 616 | + ->meta([ | |
| 617 | + 'permissions' => 'orders/view' | |
| 618 | + ]); | |
| 616 | 619 | |
| 617 | 620 | $router->put('/{order}/address/{id}', [OrderController::class, 'updateOrderAddress'])->meta([ |
| 618 | 621 | 'permissions' => 'orders/manage' |
| 619 | 622 | ]); |
| @@ -621,8 +624,12 @@ | ||
| 621 | 624 | $router->put('/{order}/transactions/{transaction}/status', [OrderController::class, 'updateTransactionStatus'])->meta([ |
| 622 | 625 | 'permissions' => 'orders/manage' |
| 623 | 626 | ]); |
| 624 | 627 | |
| 628 | + $router->post('/{order}/transactions/{transaction}/sync', [OrderController::class, 'syncPendingTransaction'])->meta([ | |
| 629 | + 'permissions' => 'orders/manage' | |
| 630 | + ]); | |
| 631 | + | |
| 625 | 632 | $router->post('/{order}/create-custom', [OrderController::class, 'createCustom'])->int('id')->meta([ |
| 626 | 633 | 'permissions' => 'orders/create' |
| 627 | 634 | ]); |
| 628 | 635 | |
| @@ -635,9 +642,26 @@ | ||
| 635 | 642 | ]); |
| 636 | 643 | |
| 637 | 644 | }); |
| 638 | 645 | |
| 646 | +$router->prefix('renewals')->withPolicy('OrderPolicy')->group(function (Router $router) { | |
| 647 | + $router->get('/', [RenewalController::class, 'index'])->meta([ | |
| 648 | + 'permissions' => 'orders/view' | |
| 649 | + ]); | |
| 639 | 650 | |
| 651 | + $router->get('/{id}', [RenewalController::class, 'show'])->int('id')->meta([ | |
| 652 | + 'permissions' => 'orders/view' | |
| 653 | + ]); | |
| 654 | + | |
| 655 | + $router->post('/{order}/void', [RenewalController::class, 'void'])->meta([ | |
| 656 | + 'permissions' => 'orders/manage' | |
| 657 | + ]); | |
| 658 | + | |
| 659 | + $router->post('/{order}/resend', [RenewalController::class, 'resend'])->meta([ | |
| 660 | + 'permissions' => 'orders/manage' | |
| 661 | + ]); | |
| 662 | +}); | |
| 663 | + | |
| 640 | 664 | $router->prefix('labels')->withPolicy('LabelPolicy')->group(function (Router $router) { |
| 641 | 665 | $router->get('/', [LabelController::class, 'index'])->meta([ |
| 642 | 666 | 'permissions' => 'labels/view' |
| 643 | 667 | ]); |
| @@ -809,10 +833,10 @@ | ||
| 809 | 833 | }); |
| 810 | 834 | |
| 811 | 835 | $router->post('/upload-editor-file', [FileUploadController::class, 'uploadEditorFile'])->withPolicy('AdminPolicy'); |
| 812 | 836 | |
| 813 | -$router->prefix('notes')->withPolicy('AdminPolicy')->group(function (Router $router) { | |
| 814 | - $router->post('/attach', [NotesController::class, 'attach']); | |
| 837 | +$router->prefix('notes')->withPolicy('OrderPolicy')->group(function (Router $router) { | |
| 838 | + $router->post('/attach', [NotesController::class, 'attach'])->meta(['permissions' => 'orders/manage']); | |
| 815 | 839 | }); |
| 816 | 840 | |
| 817 | 841 | $router->prefix('app')->withPolicy('AdminPolicy')->group(function (Router $router) { |
| 818 | 842 | $router->get('init', [AppController::class, 'init']); |
| @@ -894,11 +918,8 @@ | ||
| 894 | 918 | $router->post('country/rate', [TaxRateController::class, 'store'])->meta([ |
| 895 | 919 | 'permissions' => 'store/sensitive' |
| 896 | 920 | ]); |
| 897 | 921 | $router->delete('country/rate/{id}', [TaxRateController::class, 'delete'])->int('id')->meta([ |
| 898 | - 'permissions' => 'store/sensitive' | |
| 899 | - ]); | |
| 900 | - $router->delete('country/{country_code}', [TaxRateController::class, 'deleteCountry'])->meta([ | |
| 901 | 922 | 'permissions' => 'store/sensitive' |
| 902 | 923 | ]); |
| 903 | 924 | $router->post('country-status/{country_code}', [TaxRateController::class, 'updateCountryStatus'])->meta([ |
| 904 | 925 | 'permissions' => 'store/sensitive' |