جشنواره بهارانه راکت! ۳۵% تخفیف ویژه بر روی دوره‌های آموزشی

مشاهده دوره‌ها
ثانیه
دقیقه
ساعت
روز
امیررضا
2 سال پیش توسط امیررضا مطرح شد
2 پاسخ

لاراول

سلام خسته نباشید
پکیحی هست در لاراول ک نقش کاربران در ان بشه درست کرد


ثبت پرسش جدید
رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش مطرح شد
1

درود خوبی ..
۱. جدول Role برای ستون users ایجاد کنید:

php artisan make:migration add_role_column_to_users_table --table=users

و کد زیر را وارد کنید:

public function up()
{
   Schema::table('users', function (Blueprint $table) {
 $table->string('role')->default('user');
   });
}

کد بالا به طور پیش فرض مقدار user در جدول role ایجاد می کند.

۲. یک میان افزار (Middleware) با نام IsAdmin ایجاد کنید:

php artisan make:middleware IsAdminMiddleware

مسیر Middleware لاراول :

App > Http > Middleware

۳. کد زیر را در فایل IsAdminMiddleware.php وارد کنید:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class IsAdminMiddleware
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle(Request $request, Closure $next)
{
    if(auth()->user()->role !== 'admin'){
        abort(403, 'شما دسترسی لازم برای ورود به این صفحه را ندارید!');
    }
    return $next($request);
}
}

عملکرد کد بالا اینکه در تعریف شرط مثلا admin به همه صفحات مورد نظر دسترسی خواهد داشت در صورتی که کاربر admin باشد و اما اگر کاربر عادی باشد نمی تواند به صفحات آن دسترسی داشته باشد که با خطای 403 رو به رو خواهد شد و مگر اینه شرط مورد نظر کاربر عادی تعریف شده باشد

۴. حالا آدرس زیر را در فایل فایل Kernel.php فراخوانی کنید:

'admin' => \App\Http\Middleware\IsAdminMiddleware::class,

۵. در مدل User.php نقش کاربران را تعریف کنید:

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
use HasFactory, Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name',
    'email',
    'password',
    'role',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password',
    'remember_token',
];

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'email_verified_at' => 'datetime',
];

public function getRoleInPersian()
{
    if($this->role === 'user') {
        return 'کاربر عادی';
    }
    if ($this->role === 'author') {
        return 'نویسنده';
    }
    if ($this->role === 'admin') {
        return 'مدیر';
    }
}
}

۶. می توانید Middleware در روت ها در فایل web.php اعمال کنید:

Route::middleware(['auth', 'admin'])->prefix('/userarea')->group(function() {
Route::resource('/users', UserController::class)->except(['show']);
});

۷. در آخر شرط های دسترسی کاربر را اعمال کنید:

<ul class="listpanel mt-4">
  <li class="mb-3"><a href="{{route('userarea')}}">پیشخوان</a></li>
  @if(auth()->user()->role === 'admin')
<li class="mb-3"><a href="{{route('users.index')}}">کاربران</a></li>
<li class="mb-3"><a href="{{route('categories.index')}}">دسته بندی</a></li>
  @endif
  @if(auth()->user()->role === 'admin' || auth()->user()->role === 'author')
<li class="mb-3"><a href="{{route('posts.index')}}">نوشته ها</a></li>
  @endif
</ul>

پیوند زیر:
https://yun.ir/mvze48


میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 2 سال پیش مطرح شد
0

سلام خسته نباشید
بهترین پکیج برای مقام و دسترسی
https://spatie.be/docs/laravel-permission/v5/introduction


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام