Comments (2)
Mantap, Om.. terimakasih atas jawabannya 🙏
from nodemi.
@memcaliber Iya benar user-create
adalah kata kerja kunci dalam C-R-U-D
.
kamu bisa menggantinya dengan kata kunci yang lain, guna untuk membatasi akses dari current user
yang lagi login dalam melakukan aksinya.
Saya biasanya menggunakan standart seperti dibawah
"product-create", // user yg memiliki akses untuk melakukan create / form untuk buat product - GET
"product-stored", // user yg memiliki akses untuk melakukan stored / aksi simpan product baru - POST
"product-edit", // user yg memiliki akses untuk melakukan edit / form untuk sunting product - GET
"product-update", // user yg memiliki akses untuk melakukan update / aksi perbarui product - PUT
"product-delete", // user yg memiliki akses untuk melakukan delete / aksi hapus product - DELETE
"product-search" // user yg memiliki akses untuk melakukan search / cari data product - GET
"product-view" // user yg memiliki akses untuk melakukan view / melihat data semua product - GET
"product-show" // user yg memiliki akses untuk melakukan show / melihat detail product - GET
Penggunaan
Cara pengunaannya pertama daftarkan kata kunci aksesnya ke Permision
const permissions = [
"product-create",
"product-stored",
"product-edit",
"product-update",
"product-delete",
"product-search",
"product-show",
"product-view",
]
for (let permission of permissions) {
await Permission.create({ name: permission })
}
Buat Role
Kemudian buat role sesuai kebutuhan, misalnya
si admin yang hanya dapat melihat product saja, tapi tidak bisa create baru, delete maupun update.
await Role.create({ name: 'low_admin' }) // create role baru dengan nama 'low_admin'
Pasangkan Permission ke Role
Lalu pasangkan permission yang sudah dibuat ke role low_admin
. sehingga user yang memiliki role low_admin
hanya dapat memiliki akses view
, show
, dan search
product saja.
const permissions = [
"product-view",
"product-show",
"product-search",
]
const lowAdmin = await Role.findOne({ where: { name: "low_admin" } })
if (lowAdmin) {
await lowAdmin .assignPermissions(permissions) // memasangkan permission ke role
}
Mengeset User Role
Setelah role dan permission sudah jadi untuk role low_admin
. berikutnya tinggal memilih saja user mana yang mau di set sebagai role low_admin
.
// mengeset user tertentu dengan role low_admin
await user.setRole("low_admin") // params is role id or name
Batasi User akses
Setelah itu, jangan lupa untuk setiap operasi C-R-U-D
di controller, bisa dilindungi dari user yang tidak memilii akses, contoh kode dibawah current user yang tidak memiliki akses product-delete
akan mendapat response forbidden
status code.
if (!GateAccess(user, ["product-delete"]))
{
return res.sendStatus(403) // return forbidden status code
}
// code to delete product here.....
from nodemi.
Related Issues (4)
- #ASK Tentang Table user_has_role HOT 1
- Next feature & invalid HOT 1
- User Role & Permissions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nodemi.