سلام
در پروژه لاراولی که از پکیج spatie برای سطح دسترسی استفاده شده، چگونه میشود سوپر ادمین تعریف کرد که رول ها و پرمیشن ها رو برای سوپر ادمین چک نکنه؟
سلام 🖐
امیدوارم حالت خوب و عالی باشی🙏
در پکیج Laravel Spatie Permission، شما میتوانی با استفاده از مفهوم "سوپر ادمین" یا "Super Admin" کاربری را تعریف کنی که از چک کردن رولها و مجوزها در مواقع خاص مستثنی هستن . برای این کار، میتونی از گیتهوکها (Middleware) و یا سیاستها (Policies) استفاده کنی. در ادامه، دو روش را توضیح میدم بهت
با استفاده ازدستور php artisan make:middleware یه گیت هوک درست میکنیم
در فایل SuperAdminMiddleware، در متد handle، شرطی را بررسی میکنیم که اگر کاربر "سوپر ادمین" باشد، بدون انجام چک رولها و مجوزها به مسیر مورد نظر ادامه بده
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class SuperAdminMiddleware
{
public function handle(Request $request, Closure $next)
{
if (auth()->user() && auth()->user()->isSuperAdmin()) {
return $next($request);
}
return abort(403, 'Unauthorized');
}
}
در فایل app/Http/Kernel.php، میتونی اینو رو به لیست routeMiddleware اضافه کنی
protected $routeMiddleware = [
// ...
'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
];
و در نهایت حالا میتوانید از superadmin برای تعیین سطح دسترسی "سوپر ادمین" در روتها و گروههای مسیر استفاده کنی اینطوری
Route::middleware(['auth', 'superadmin'])->group(function () {
// مسیرها و گروههای دیگر
});
یه روش دیگه ام داره که اگه این کار نکرد یا مشکل خوردی بگو بهت بگم چطوری از Policies ها میتونی استفاده کنی
امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹
سلام مرسی از لطف تون که وقت گذاشتین
من تا حالا دستی رول پرمیشن درست میکردم این سری خاستم از این پکیج استفاده کنم
تست میکنم نتیجه عرض میکنم
سپاسگزارم
سلام
در مستندات رسمی این پکیج به صورت خاص یک راهکار برای این موضوع داده که باعث میشه همه دسترسی ها برای superadmin فعال باشند:
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this->registerPolicies();
// Implicitly grant "Super Admin" role all permissions
// This works in the app by using gate-related functions like auth()->user->can() and @can()
Gate::before(function ($user, $ability) {
return $user->hasRole('Super Admin') ? true : null;
});
}
}
مستندات رسمی پکیج:
https://spatie.be/docs/laravel-permission/v5/basic-usage/super-admin
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟