From 6a700fbd4b6207bb94e6aa50725098e93e52b7d3 Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Sun, 21 Dec 2025 03:38:52 +0500 Subject: [PATCH] Enhance user role checks and update card order tabs visibility - Updated the isSystemUser method to include currency maintainers in role checks. - Modified getTabs method in ListCardOrders to return an empty array for non-system users. - Added a dehydrate state function for Turkmen phone numbers in UserForm schema. --- .../Cards/CardOrders/Pages/ListCardOrders.php | 5 ++ .../Resources/Users/Schemas/UserForm.php | 1 + .../Policies/CurrencyRatePolicy.php | 69 +++++++++++++++++++ .../UserAdjustments/Traits/RoleCheckers.php | 2 +- 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 app/Modules/CurrencyRate/Policies/CurrencyRatePolicy.php diff --git a/app/Filament/Clusters/Cards/CardOrders/Pages/ListCardOrders.php b/app/Filament/Clusters/Cards/CardOrders/Pages/ListCardOrders.php index b309b45..4bcc909 100644 --- a/app/Filament/Clusters/Cards/CardOrders/Pages/ListCardOrders.php +++ b/app/Filament/Clusters/Cards/CardOrders/Pages/ListCardOrders.php @@ -21,7 +21,12 @@ class ListCardOrders extends ListRecords public function getTabs(): array { + if (! user()->isSystemUser()) { + return []; + } + $data = []; + foreach (array_keys(OrderStatusRepository::statusClasses()) as $status) { if ($status === '') { $data[null] = Tab::make(__('All')); diff --git a/app/Filament/Resources/Users/Schemas/UserForm.php b/app/Filament/Resources/Users/Schemas/UserForm.php index b69d3f4..0365006 100644 --- a/app/Filament/Resources/Users/Schemas/UserForm.php +++ b/app/Filament/Resources/Users/Schemas/UserForm.php @@ -32,6 +32,7 @@ class UserForm ->unique(ignoreRecord: true) ->mask('99 99 99 99') ->prefix('+993') + ->dehydrateStateUsing(fn($state) => unMaskTurkmenNumber($state)) ->rules([ new PhoneNumberVerificationRule, ]) diff --git a/app/Modules/CurrencyRate/Policies/CurrencyRatePolicy.php b/app/Modules/CurrencyRate/Policies/CurrencyRatePolicy.php new file mode 100644 index 0000000..0bd32ca --- /dev/null +++ b/app/Modules/CurrencyRate/Policies/CurrencyRatePolicy.php @@ -0,0 +1,69 @@ +can('ViewAny:CurrencyRate'); + } + + public function view(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('View:CurrencyRate'); + } + + public function create(AuthUser $authUser): bool + { + return $authUser->can('Create:CurrencyRate'); + } + + public function update(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('Update:CurrencyRate'); + } + + public function delete(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('Delete:CurrencyRate'); + } + + public function restore(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('Restore:CurrencyRate'); + } + + public function forceDelete(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('ForceDelete:CurrencyRate'); + } + + public function forceDeleteAny(AuthUser $authUser): bool + { + return $authUser->can('ForceDeleteAny:CurrencyRate'); + } + + public function restoreAny(AuthUser $authUser): bool + { + return $authUser->can('RestoreAny:CurrencyRate'); + } + + public function replicate(AuthUser $authUser, CurrencyRate $currencyRate): bool + { + return $authUser->can('Replicate:CurrencyRate'); + } + + public function reorder(AuthUser $authUser): bool + { + return $authUser->can('Reorder:CurrencyRate'); + } +} diff --git a/app/Modules/UserAdjustments/Traits/RoleCheckers.php b/app/Modules/UserAdjustments/Traits/RoleCheckers.php index 5d950c8..a949a4d 100644 --- a/app/Modules/UserAdjustments/Traits/RoleCheckers.php +++ b/app/Modules/UserAdjustments/Traits/RoleCheckers.php @@ -57,6 +57,6 @@ trait RoleCheckers */ public function isSystemUser(): bool { - return $this->isAdmin() || $this->isOperator(); + return $this->isAdmin() || $this->isOperator() || $this->isCurrencyMaintainer(); } }