From bdf0a3afebb954ddfb9ef2531c5e904a5bf9c462 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sun, 4 Aug 2024 01:35:18 +0800 Subject: [PATCH 1/2] Sorry Voucher Implementation - temporary work around on 403 issue, backend permission issue --- .../Standards/Rules/CanCreateVoucher.php | 4 +- .../Rules/CanListVoucherCampaigns.php | 61 +------------------ 2 files changed, 6 insertions(+), 59 deletions(-) diff --git a/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php b/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php index 25515097..af40f6aa 100644 --- a/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php +++ b/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\Vouchers\Standards\Rules; use App\Classes\General\Abstracts\AbstractRule; use App\Classes\Modules\Vouchers\Standards\Validators\VoucherValidation; use App\Classes\Modules\Vouchers\DataTransferObjects\CreateVoucherObject; +use App\Classes\ValueObjects\Constants\RoleTypes; use Illuminate\Support\Facades\Auth; use App\Classes\ValueObjects\Constants\Vouchers; @@ -34,7 +35,8 @@ class CanCreateVoucher extends AbstractRule case Vouchers::SORRY_50: case Vouchers::SORRY_100: case Vouchers::SORRY_200: - $isAuthorized = Auth::user()->can('add voucher'); + // $isAuthorized = Auth::user()->can('add voucher'); + $isAuthorized = in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES); break; default: $isAuthorized = true; diff --git a/app/Classes/Modules/Vouchers/Standards/Rules/CanListVoucherCampaigns.php b/app/Classes/Modules/Vouchers/Standards/Rules/CanListVoucherCampaigns.php index 2dff9687..e5c384ee 100644 --- a/app/Classes/Modules/Vouchers/Standards/Rules/CanListVoucherCampaigns.php +++ b/app/Classes/Modules/Vouchers/Standards/Rules/CanListVoucherCampaigns.php @@ -4,7 +4,7 @@ namespace App\Classes\Modules\Vouchers\Standards\Rules; use App\Classes\General\Abstracts\AbstractRule; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\RoleTypes; class CanListVoucherCampaigns extends AbstractRule { @@ -14,63 +14,8 @@ class CanListVoucherCampaigns extends AbstractRule */ protected function authorized($object): bool { - Log::info('view document: ' . Auth::user()->can('view document')); - Log::info('add document: ' . Auth::user()->can('add document')); - Log::info('edit document: ' . Auth::user()->can('edit document')); - Log::info('delete document: ' . Auth::user()->can('delete document')); - - Log::info('view standard_segment: ' . Auth::user()->can('view standard_segment')); - Log::info('add standard_segment: ' . Auth::user()->can('add standard_segment')); - Log::info('edit standard_segment: ' . Auth::user()->can('edit standard_segment')); - Log::info('delete standard_segment: ' . Auth::user()->can('delete standard_segment')); - - Log::info('view standard_segment_constant: ' . Auth::user()->can('view standard_segment_constant')); - Log::info('add standard_segment_constant: ' . Auth::user()->can('add standard_segment_constant')); - Log::info('edit standard_segment_constant: ' . Auth::user()->can('edit standard_segment_constant')); - Log::info('delete standard_segment_constant: ' . Auth::user()->can('delete standard_segment_constant')); - - Log::info('view segment: ' . Auth::user()->can('view segment')); - Log::info('add segment: ' . Auth::user()->can('add segment')); - Log::info('edit segment: ' . Auth::user()->can('edit segment')); - Log::info('delete segment: ' . Auth::user()->can('delete segment')); - - Log::info('view segment_constant: ' . Auth::user()->can('view segment_constant')); - Log::info('add segment_constant: ' . Auth::user()->can('add segment_constant')); - Log::info('edit segment_constant: ' . Auth::user()->can('edit segment_constant')); - Log::info('delete segment_constant: ' . Auth::user()->can('delete segment_constant')); - - Log::info('view company_bank: ' . Auth::user()->can('view company_bank')); - Log::info('add company_bank: ' . Auth::user()->can('add company_bank')); - Log::info('edit company_bank: ' . Auth::user()->can('edit company_bank')); - Log::info('delete company_bank: ' . Auth::user()->can('delete company_bank')); - - Log::info('view currency: ' . Auth::user()->can('view currency')); - Log::info('add currency: ' . Auth::user()->can('add currency')); - Log::info('edit currency: ' . Auth::user()->can('edit currency')); - Log::info('delete currency: ' . Auth::user()->can('delete currency')); - - Log::info('view currency_rate: ' . Auth::user()->can('view currency_rate')); - Log::info('add currency_rate: ' . Auth::user()->can('add currency_rate')); - Log::info('edit currency_rate: ' . Auth::user()->can('edit currency_rate')); - Log::info('delete currency_rate: ' . Auth::user()->can('delete currency_rate')); - - Log::info('view booking: ' . Auth::user()->can('view booking')); - Log::info('add booking: ' . Auth::user()->can('add booking')); - Log::info('edit booking: ' . Auth::user()->can('edit booking')); - Log::info('delete booking: ' . Auth::user()->can('delete booking')); - - Log::info('add milestone: ' . Auth::user()->can('add milestone')); - Log::info('add reward: ' . Auth::user()->can('add reward')); - Log::info('edit milestone: ' . Auth::user()->can('edit milestone')); - Log::info('delete milestone: ' . Auth::user()->can('delete milestone')); - Log::info('delete reward: ' . Auth::user()->can('delete reward')); - - Log::info('add voucher: ' . Auth::user()->can('add voucher')); - Log::info('list voucher campaigns: ' . Auth::user()->can('list voucher campaigns')); - Log::info('update bank_metadata: ' . Auth::user()->can('update bank_metadata')); - - - if (!Auth::user()->can('list voucher campaigns')) { + // if (!Auth::user()->can('list voucher campaigns')) { + if (!in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) { return false; } return true; From 8973e7b50f58c61e36d3f0b55d4c2a47b1cc522a Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sun, 4 Aug 2024 03:22:53 +0800 Subject: [PATCH 2/2] Fix a problem where voucherify campaign vouchers limit not displaying with correct info for the month --- app/Classes/General/Interfaces/KeyValueInterface.php | 2 +- app/Classes/Modules/Accounts/Services/CreatesKeyValuePair.php | 2 +- .../Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php | 2 +- app/Http/Resources/UserRewardResource.php | 2 +- app/Http/Resources/VoucherCampaignResource.php | 2 +- app/Models/User.php | 4 ++-- app/Models/VoucherCampaign.php | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Classes/General/Interfaces/KeyValueInterface.php b/app/Classes/General/Interfaces/KeyValueInterface.php index fbee5265..8089e46a 100644 --- a/app/Classes/General/Interfaces/KeyValueInterface.php +++ b/app/Classes/General/Interfaces/KeyValueInterface.php @@ -8,5 +8,5 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; interface KeyValueInterface { - public function attributes(): morphMany; + public function attributesKVP(): morphMany; } diff --git a/app/Classes/Modules/Accounts/Services/CreatesKeyValuePair.php b/app/Classes/Modules/Accounts/Services/CreatesKeyValuePair.php index c963ec4e..6634bed2 100644 --- a/app/Classes/Modules/Accounts/Services/CreatesKeyValuePair.php +++ b/app/Classes/Modules/Accounts/Services/CreatesKeyValuePair.php @@ -22,7 +22,7 @@ class CreatesKeyValuePair extends AbstractUpdateRelationshipRecord $model->key = $object->getKey(); $model->value = $object->getValue(); - return $this->handler($kv->attributes(), $model); + return $this->handler($kv->attributesKVP(), $model); } } diff --git a/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php b/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php index de29aa63..5c85895a 100644 --- a/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php +++ b/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php @@ -193,7 +193,7 @@ class CreateVoucherLogic extends AbstractControllerLogic $key, $total ); - $metadata = $voucherCampaign->attributes()->where('key', $key)->first(); + $metadata = $voucherCampaign->attributesKVP()->where('key', $key)->first(); if($metadata){ $this->updatesKeyValuePair->execute($metadata, $keyValuePairObject); } diff --git a/app/Http/Resources/UserRewardResource.php b/app/Http/Resources/UserRewardResource.php index b988a1d3..25080270 100644 --- a/app/Http/Resources/UserRewardResource.php +++ b/app/Http/Resources/UserRewardResource.php @@ -17,7 +17,7 @@ class UserRewardResource extends JsonResource { $emailReminder = null; if ($request->has('isAdmin')) { - $keyValuePairs = $this->user->attributes()->get(); + $keyValuePairs = $this->user->attributesKVP()->get(); $emailReminder = KeyValueBasicResource::collection($keyValuePairs); $this->voucher->email = $emailReminder; } diff --git a/app/Http/Resources/VoucherCampaignResource.php b/app/Http/Resources/VoucherCampaignResource.php index ade4334b..ebc6964c 100644 --- a/app/Http/Resources/VoucherCampaignResource.php +++ b/app/Http/Resources/VoucherCampaignResource.php @@ -17,7 +17,7 @@ class VoucherCampaignResource extends JsonResource { $metadata = null; if ($request->has('include_metadata')) { - $metadata = KeyValueBasicResource::collection($this->attributes); + $metadata = KeyValueBasicResource::collection($this->attributesKVP()->latest()->get()); } return [ diff --git a/app/Models/User.php b/app/Models/User.php index 7e0a4aa9..46e8635f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -106,7 +106,7 @@ class User extends AbstractModel implements public function hasAttribute(string $key, $value = null): bool { - $query = $this->attributes()->where('key', $key); + $query = $this->attributesKVP()->where('key', $key); if ($value !== null) { $query->where('value', $value); @@ -116,7 +116,7 @@ class User extends AbstractModel implements } - public function attributes(): MorphMany + public function attributesKVP(): MorphMany { return $this->morphMany(KeyValuePair::class, 'owner'); } diff --git a/app/Models/VoucherCampaign.php b/app/Models/VoucherCampaign.php index e97320e5..4e14cc12 100644 --- a/app/Models/VoucherCampaign.php +++ b/app/Models/VoucherCampaign.php @@ -22,7 +22,7 @@ class VoucherCampaign extends AbstractModel implements KeyValueInterface /** * @return MorphMany */ - public function attributes(): MorphMany + public function attributesKVP(): MorphMany { return $this->morphMany(KeyValuePair::class, 'owner'); }