From 0744b372d49569cb700a1c4c6a8939e08d918b93 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Thu, 7 Nov 2024 10:23:24 +0500 Subject: [PATCH] sber permissions --- .../Concerns/NovaSberPaymentOrderAuth.php | 87 +++++++++++++++++++ .../Nova/Resources/NovaSberPaymentOrder.php | 3 + app/Nova/Resources/CurrencyRate.php | 31 +++++++ app/Nova/User.php | 12 +++ app/Repos/System/Nova/NovaMenuRepo.php | 2 +- lang/tk.json | 1 + 6 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 app/Modules/SberPaymentOrder/Nova/Resources/Concerns/NovaSberPaymentOrderAuth.php diff --git a/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/NovaSberPaymentOrderAuth.php b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/NovaSberPaymentOrderAuth.php new file mode 100644 index 0000000..6e02a7f --- /dev/null +++ b/app/Modules/SberPaymentOrder/Nova/Resources/Concerns/NovaSberPaymentOrderAuth.php @@ -0,0 +1,87 @@ +user(); + + if ($user->isSystemUser()) { + return; + } + + if ($this->resource->user_id == auth()->id()) { + return; + } + + throw new AuthorizationException(); + } + + /** + * Edit button + */ + public function authorizedToUpdate(Request $request): bool + { + $user = auth()->user(); + + if ($user->isSystemUser()) { + return true; + } + + return false; + } + + /** + * Edit proceess + */ + public function authorizeToUpdate(Request $request): void + { + $user = auth()->user(); + + if ($user->isSystemUser()) { + return; + } + + if ($this->resource->user_id == auth()->id()) { + return; + } + + throw new AuthorizationException(); + } + + /** + * Delete button + */ + public function authorizedToDelete(Request $request) + { + $user = auth()->user(); + + if ($user->isSystemUser()) { + return true; + } + + return false; + } + + public function authorizeToDelete(Request $request) + { + $user = auth()->user(); + + if ($user->isSystemUser()) { + return; + } + + throw new AuthorizationException(); + } + + public function authorizedToForceDelete(Request $request) + { + throw_unless(auth()->user()->isMe(), AuthorizationException::class); + } +} diff --git a/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php b/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php index 43ce448..132d04d 100644 --- a/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php +++ b/app/Modules/SberPaymentOrder/Nova/Resources/NovaSberPaymentOrder.php @@ -3,6 +3,7 @@ namespace App\Modules\SberPaymentOrder\Nova\Resources; use App\Models\Branch\Branch; +use App\Modules\SberPaymentOrder\Nova\Resources\Concerns\NovaSberPaymentOrderAuth; use App\Modules\SberPaymentOrder\Nova\Resources\Concerns\SberPaymentOrderFieldsForDetail; use App\Modules\SberPaymentOrder\Nova\Resources\Concerns\SberPaymentOrderFieldsForIndex; use App\Nova\Actions\MakeSberPaymentAction; @@ -31,6 +32,8 @@ use Outl1ne\NovaSimpleRepeatable\SimpleRepeatable; */ class NovaSberPaymentOrder extends Resource { + use NovaSberPaymentOrderAuth; + /** * The model the resource corresponds to. * diff --git a/app/Nova/Resources/CurrencyRate.php b/app/Nova/Resources/CurrencyRate.php index e09be6e..78ec659 100644 --- a/app/Nova/Resources/CurrencyRate.php +++ b/app/Nova/Resources/CurrencyRate.php @@ -5,6 +5,7 @@ namespace App\Nova\Resources; use App\Models\CurrencyRate as ModelsCurrencyRate; use App\Nova\Resource; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Gate; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; @@ -35,6 +36,36 @@ class CurrencyRate extends Resource 'id', ]; + /** + * Determine if the given resource is authorizable. + * + * @return bool + */ + public static function authorizable() + { + if (auth()->user()->isSystemUser()) { + return false; + } + + // disables + return true; + } + + /** + * Determine if the resource should be available for the given request. + * + * @param \Illuminate\Http\Request $request + * @return bool + */ + public static function authorizedToViewAny(Request $request) + { + if (auth()->user()->isSystemUser()) { + return true; + } + + return false; + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/User.php b/app/Nova/User.php index f8c1d09..7e4a67d 100644 --- a/app/Nova/User.php +++ b/app/Nova/User.php @@ -2,6 +2,7 @@ namespace App\Nova; +use App\Nova\Forms\NovaForm; use App\Nova\Resources\Branch\Branch; use App\Nova\Resources\Order\Card\CardOrder; use App\Nova\Resources\Order\Loan\LoanOrder; @@ -13,6 +14,7 @@ use Illuminate\Validation\Rules; use Laravel\Nova\Fields\BelongsToMany; use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\HasMany; +use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\MorphToMany; use Laravel\Nova\Fields\Password; @@ -108,6 +110,16 @@ class User extends Resource ->creationRules('required', Rules\Password::defaults()) ->updateRules('nullable', Rules\Password::defaults()), + Boolean::make(__('Phone verified'), 'phone_verified_at') + ->default(false) + ->fillUsing(function ($request, $model, $attribute, $requestAttribute) { + if ($request->boolean('phone_verified_at')) { + $model->phone_verified_at = now(); + } + }) + ->onlyOnForms() + ->canSeeWhen('isAdmin', $this), + Boolean::make(__('Active'), 'active') ->default(true) ->canSeeWhen('isAdmin', $this), diff --git a/app/Repos/System/Nova/NovaMenuRepo.php b/app/Repos/System/Nova/NovaMenuRepo.php index cbe3fb9..6b960c1 100644 --- a/app/Repos/System/Nova/NovaMenuRepo.php +++ b/app/Repos/System/Nova/NovaMenuRepo.php @@ -97,7 +97,7 @@ class NovaMenuRepo MenuItem::resource(LocaleManagerResource::class), ])->collapsedByDefault(), - ])->icon('cog')->collapsedByDefault(), + ])->icon('cog')->collapsedByDefault()->canSee(NovaPermissionRepo::isSuperAdmin()), MenuSection::resource(OnlinePaymentHistoryResource::class) ->icon('credit-card') diff --git a/lang/tk.json b/lang/tk.json index 0473271..814e373 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -207,6 +207,7 @@ "Users": "Ulanyjylar", "Variant Also Negotiates": "Wariant hem gepleşik geçirýär", "Verify Phone Number": "Telefon beligiňizi tassyklaň", + "Phone verified": "Telefon tassyklanan", "Verify Email Address": "E-poçta salgysyny barlaň", "Verify Your Email Address": "E-poçta salgyňyzy barlaň", "Web Server is Down": "Web Serwer ýapyk",