$ php artisan make:model roles -m
Ubah Kode
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
Menjadi
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->string('role')->default('user');
$table->timestamps();
});
}
$ php artisan migrate
app/Models/Role.php
Ubah Kode
class Role extends Model
{
use HasFactory;
}
Menjadi
class Role extends Model
{
use HasFactory;
protected $fillable =['user_id'];
}
app/Models/User.php
public function role(){
return $this->hasOne(Role::class);
}
app/Http/Controllers/Auth/RegisterController.php
Ubah Kode
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
Menjadi
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
\App\Models\Role::create(['user_id'=>$user->id]);
return $user;
}
$ php artisan make:middleware CheckRole
Ubah kode
public function handle(Request $request, Closure $next)
{
return $next($request);
}
Menjadi
public function handle(Request $request, Closure $next,...$roles)
{
if(in_array($request->user()->role->role,$roles)){
return $next($request);
}
return \redirect('/');
}
Tambahkan Kode di bawah ke helper global
use Jenssegers\Agent\Agent;
$agent = new Agent();
function CheckRole($role){
if($role == "admin"){
return auth()->user()->role->role == $role;
}else{
return auth()->user()->role->role == $role;
}
}
dasar penggunakan
@if(CheckRole("admin"))
<a href="{{route('#')}}">Dashboard</a>
@endif
Tidak ada komentar:
Posting Komentar