Laravel menyediakan cara untuk mengatur otorisasi dan mengontrol akses, misalkan ada dua pengguna dan pengguna tersebut hanya boleh mengedit profilnya sendiri dan tidak boleh mengedit profil orang lain, juga dalam hal data pengguna hanya boleh menghapus dan mengganti data yang dibuatnya sendiri tidak boleh menghapus dan mengganti data orang lain, maka laravel menyediakan fasilitas tersebut bagaimana cara menggunakan fasilitas Authorization tersebut ikuti catatan dibawah ini.
Misalkan pada aplikasi kita memperbolehkan seorang user memasukan data produk miliknya dan ia diperbolehkan juga untuk mengedit dan menghapus produk yang ia buat sendiri, namun user lain tidak boleh mengedit dan menghapus produk yang dibuat oleh user lain. Pertama-tama buat sebuah file Policy dengan cara ketik pada shell sebagai berikut:
php artisan make:policy ProductPolicymaka akan tercipta sebuah file ProductPolicy.php
Kemudian isikan kode dibawah ini pada file ProductPolicy tersebut.
Lalu pada file app/Providers/AuthServiceProvider.php tambahkan kode berikut ini.
use App\Policies\ProductPolicy;dan
'App\Model' => 'App\Policies\ModelPolicy',Script file AuthServiceProvider.php bisa dilihat dibawah ini.
Kemudian pada Model User tambahkan sebuah fungsi sebagai berikut.
public function owns($related) { return $this->id == $related->user_id; }Setelah itu gunakan pada Controller dengan menyematkan kode berikut ini.
$this->authorize('authProduct', $product);Apabila digunakan pada fungsi Edit maka akan menjadi seperti ini.
public function edit($id) { $product = Product::findOrFail($id); $this->authorize('authProduct', $product); $category = Category::lists('category', 'id'); return view('dashboard.product.edit', [ 'product' => $product, 'category' => $category ]); }Dan apabila digunakan pada fungsi Hapus atau destroy akan menjadi seperti kode dibawah ini.
public function destroy($id) { $product = Product::find($id); $this->authorize('authProduct', $product); Storage::delete('product/' . $product->upfile); $product->delete(); Session::flash('message', 'Menghapus produk Sukses'); return Redirect::to('dashboard/product'); }Dan apabila digunakan pada blade template untuk menghilangkan link edit atau hapus oleh user yang bukan pemiliknya maka kodenya seperti dibawah ini.
mas mau nanya, saya newbie banget
BalasHapuskalo public funtion edit itu nulisnya dimana yaa?