Tags

Tutorial Django: Cara Membuat Custom Permission Pada Django

Tutorial Django: Cara Membuat Custom Permission Pada Django

Django menyediakan fitur permission bawaan seperti add, change, dan delete. Namun, terkadang kita memerlukan permission yang tidak termasuk dalam permission bawaan tersebut. Untuk itu, Django memungkinkan kita untuk membuat custom permission sendiri. Berikut adalah langkah-langkah untuk membuat custom permission pada Django.

Cara Membuat Custom Permission Pada Django

  1. Pertama, kita perlu menentukan permission kita dengan membuat subclass dari django.contrib.auth.models.Permission:
from django.contrib.auth.models import Permission

class CustomPermission(Permission):
    # fields dan methods untuk custom permission
  1. Setelah itu, kita perlu mendaftarkan permission kita dengan menggunakan django.contrib.auth.management.create_permissions dalam method ready() di dalam file apps.py pada aplikasi kita:
from django.apps import AppConfig
from django.contrib.auth.management import create_permissions

class MyAppConfig(AppConfig):
    name = 'my_app'

    def ready(self):
        create_permissions(self.models_module)
  1. Kemudian, kita dapat mengggunakan permission tersebut pada model kita dengan menambahkannya ke permissions pada Meta class:
from django.db import models
from my_app.permissions import CustomPermission

class MyModel(models.Model):
    # fields dan methods model

    class Meta:
        permissions = [
            ("can_do_something", "Can do something with MyModel"),
            ("can_do_another_thing", "Can do another thing with MyModel",),
            (CustomPermission, "Custom permission for MyModel")
        ]

Dalam contoh di atas, kita menambahkan dua permission bawaan Django ("can_do_something" dan "can_do_another_thing") dan satu custom permission yang sudah kita buat sebelumnya (CustomPermission).

  1. Terakhir, kita dapat menggunakan permission tersebut di dalam view kita dengan menggunakan decorator @permission_required:
from django.contrib.auth.decorators import permission_required

@permission_required('my_app.can_do_something')
def my_view(request):
    # logic view

 Atau, kita dapat memeriksa permission di dalam view dengan menggunakan method has_perm() pada user object:

def my_view(request):
    if request.user.has_perm('my_app.can_do_something'):
        # logic view

Demikianlah cara membuat custom permission pada Django. Dengan custom permission, kita dapat mengontrol akses ke fitur-fitur tertentu dalam aplikasi kita secara lebih fleksibel.

Kesimpulan

Ada tutorial di atas, kita menggunakan python decorator untuk "melindungi" views yang membutuhkan permission.

function @permission_required untuk memastikan bahwa hanya pengguna yang memiliki permission tertentu yang dapat mengakses view tersebut. Decorator ini secara otomatis akan melakukan pengecekan permission dan akan memindahkan pengguna ke halaman login jika mereka tidak memiliki permission yang diperlukan.

Namun, kita juga dapat menggunakan metode lain untuk memeriksa permission di dalam view tanpa menggunakan decorator, seperti menggunakan method has_perm() pada user object, seperti yang ditunjukkan dalam contoh di langkah kelima di atas.


Baca juga:



Bagikan tutorial ini:
Laporkan

Dapatkan Tutorial Exclusive Via Email?


Partners