Tags

Tutorial Django: Cara Membuat Multiple User Permission

Tutorial Django: Cara Membuat Multiple User Permission

Dalam project dunia nyata, tentu tidak jarang kita akan menemukan project-project berkebutuhan khusus yang membutuhkan extra skill untuk menyelesaikannya.

Pada artikel kali ini, kita akan coba membahas sedikit tentang bagaimana cara membuat multiple user permission pada django menggunakan fungsi bawaan dari django, fungsi tersebut tentunya akan kita custom sesuai dengan kebutuhan agar lebih flexible dengan kebutuhan project yang sedang kita kerjakan.

Django menyediakan fitur yang memungkinkan pengguna memiliki hak akses yang berbeda pada aplikasi web yang dibangun dengan Django.

Berikut adalah langkah-langkah untuk membuat multiple user permission pada Django:

  1. Buatlah sebuah aplikasi Django baru atau buka aplikasi yang sudah ada.

  2. Buat model user baru yang akan digunakan sebagai parent model dari model user dengan hak akses yang berbeda. Model ini akan menyimpan informasi umum yang berlaku untuk semua pengguna.

    from django.contrib.auth.models import AbstractUser
    
    class CustomUser(AbstractUser):
        pass
    
  3. Buat model untuk setiap grup pengguna yang memiliki hak akses yang berbeda, dengan menghubungkannya ke model user yang baru saja dibuat.
    class RegularUser(models.Model):
        user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
    
    class AdminUser(models.Model):
        user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
    
    class SuperUser(models.Model):
        user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
    
  4. Tambahkan field user_type pada model CustomUser untuk menandai tipe pengguna. Kemudian, atur nilai defaultnya menjadi REGULAR (untuk pengguna reguler).
    class CustomUser(AbstractUser):
        USER_TYPE_CHOICES = (
            ('REGULAR', 'Regular'),
            ('ADMIN', 'Admin'),
            ('SUPER', 'Super'),
        )
    
        user_type = models.CharField(choices=USER_TYPE_CHOICES, max_length=10, default='REGULAR')
    
  5. Tambahkan middleware untuk menentukan akses pengguna. Buat file baru dengan nama middleware.py dan tambahkan kode berikut:
    from django.http import HttpResponseForbidden
    
    class UserAccessMiddleware:
        def __init__(self, get_response):
            self.get_response = get_response
    
        def __call__(self, request):
            if request.user.is_authenticated:
                if request.user.user_type == 'ADMIN':
                    if not request.path.startswith('/admin/'):
                        return HttpResponseForbidden()
                elif request.user.user_type == 'REGULAR':
                    if request.path.startswith('/admin/'):
                        return HttpResponseForbidden()
            response = self.get_response(request)
            return response
    
  6. Tambahkan middleware yang baru saja kita buat ke dalam MIDDLEWARE pada settings.py.
    MIDDLEWARE = [
        # ...
        'path.to.middleware.UserAccessMiddleware',
    ]
    
  7. Sekarang, kita bisa menggunakan @user_passes_test decorator pada view function untuk menentukan akses pengguna pada tiap view.
    from django.contrib.auth.decorators import user_passes_test
    
    @user_passes_test(lambda u: u.user_type == 'ADMIN')
    def admin_only_view(request):
        # ...
    

Dengan melakukan langkah-langkah di atas, kita sudah berhasil membuat multiple user permission pada Django. Dalam contoh ini, hanya ada tiga jenis pengguna yang dibuat (REGULAR, ADMIN, dan SUPER), tetapi kita bisa menambahkan lebih banyak tipe pengguna sesuai dengan kebutuhan aplikasi kita.

 



Bagikan tutorial ini:
Laporkan

Dapatkan Tutorial Exclusive Via Email?


Partners