درود دوستان...
من پروژه وبلاگ و آموزشی از لاراول Breeze استفاده کردم.
اما دو نوع پیاده سازی دسترسی ها داریم:
۱. دسترسی اول اینکه در users جدول role پیش فرض user داریم که کاربری که عضو میشه به صورت کاربر عادی هست.
و بخوام بقیه دسترسی مثل مدیر و ویرایشگر یا پشتیبانی اضافه کنم به صورت select انجام می دهم و محدودیت صفحات به این صورت هست:
@if(auth()->user()->role === 'admin' || auth()->user()->role === 'editor')
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#4" aria-expanded="false" aria-controls="flush-collapseThree">
نوشته ها
</button>
</h2>
<div id="4" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
<div class="accordion-body">
<ul>
<li><a href="{{ route('posts.index') }}" class="text-decoration-none text-dark">مدیریت نوشته ها</a></li>
<li><a href="{{ route('posts.create') }}" class="text-decoration-none text-dark">افزودن نوشته</a></li>
</ul>
</div>
</div>
</div>
@endif
دومی دسترسی اینه ما براش قسمت صفحه دسترسی و مقام ها تعریف می کنیم و هر دو اطلاعات دسترسی اضافه می کنیم مثل:
برای دسترسی :
index-page | صفحه اصلی
index-users | صفحه کاربران
Show-users | مشاهده کاربران
برای مقام ها :
Support | پشتیبانی
Editor | ویرایشگر
برای محدود سازی صفحات به روش به کار می بریم:
@can('show-users')
<li>
<button class="list-heading"><h6><i class="fa-light fa-users ms-2"></i> کاربران </h6></button>
<div class="list-text">
<ul class="mt-3 mb-3">
<li><a href="{{ route('users.index') }}" class="text-decoration-none text-dark">لیست کاربران</a></li>
<li><a href="{{ route('users.create') }}" class="text-decoration-none text-dark">ایجاد کاربر</a></li>
</ul>
</div>
</li>
@endcan
همچون مسدودی سازی صفحه به روش زیر:
public function construct()
{
$this->middleware('can:create-users')->only('create');
$this->middleware('can:delete-users')->only('destroy');
$this->middleware('can:edits-users')->only('edit', 'update');
$this->middleware('can:show-users')->only('index');
}
این دو روشی گفتم کدوم یک بهتر است و عملکرد خوبی داره؟
به رایموند کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟