diff --git a/api/admin.py b/api/admin.py index 5266c7d..27d4b34 100644 --- a/api/admin.py +++ b/api/admin.py @@ -13,6 +13,7 @@ class UserAdmin(BaseUserAdmin): "verified", "is_active", "is_staff", + "is_admin", "mobile", "address", "wallet_balance", @@ -40,6 +41,7 @@ class UserAdmin(BaseUserAdmin): "wallet_balance", "acc_no", "id_card", + "is_admin", "dob", "atoll", "island", diff --git a/api/migrations/0016_user_is_admin.py b/api/migrations/0016_user_is_admin.py new file mode 100644 index 0000000..70f5e6d --- /dev/null +++ b/api/migrations/0016_user_is_admin.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2 on 2025-06-09 06:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("api", "0015_user_created_at_user_updated_at_temporaryuser"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="is_admin", + field=models.BooleanField(default=False), + ), + ] diff --git a/api/models.py b/api/models.py index 5a1215d..71cc6ba 100644 --- a/api/models.py +++ b/api/models.py @@ -18,6 +18,7 @@ class User(AbstractUser): acc_no = models.CharField(max_length=255, blank=True) id_card = models.CharField(max_length=255, blank=True, unique=True, null=True) verified = models.BooleanField(default=False) + is_admin = models.BooleanField(default=False) dob = models.DateField(blank=True, null=True) terms_accepted = models.BooleanField(default=False) policy_accepted = models.BooleanField(default=False) diff --git a/api/serializers.py b/api/serializers.py index 65bc3b7..424adcc 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -38,6 +38,7 @@ class CustomUserSerializer(serializers.ModelSerializer): "wallet_balance", "mobile", "first_name", + "is_admin", "last_name", "email", "last_login", diff --git a/api/views.py b/api/views.py index 6fdbbc8..c981710 100644 --- a/api/views.py +++ b/api/views.py @@ -338,7 +338,6 @@ class KnoxTokenListApiView( class ListUserView(StaffEditorPermissionMixin, generics.ListAPIView): - # Create user API view serializer_class = CustomReadOnlyUserSerializer filter_backends = [DjangoFilterBackend] filterset_fields = "__all__" diff --git a/devices/views.py b/devices/views.py index c6a568f..aec9cde 100644 --- a/devices/views.py +++ b/devices/views.py @@ -30,7 +30,9 @@ class DeviceListCreateAPIView( def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) - if not request.user.is_superuser: + if request.user.is_authenticated and not getattr( + request.user, "is_admin", False + ): queryset = queryset.filter(user=request.user) page = self.paginate_queryset(queryset)