Jumat, 27 November 2020

Laravel Middleware Roles

$ 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

flutter firebase notification