permissions per page and add dam.rasadyar.com in allowed hosts

This commit is contained in:
2025-05-31 16:40:23 +03:30
parent 821a33d0f6
commit 1f6854a6dc
6 changed files with 133 additions and 3 deletions

View File

@@ -34,6 +34,7 @@ ALLOWED_HOSTS = [
'https://localhost:9200', 'https://localhost:9200',
'https://api.rasadyaar.net', 'https://api.rasadyaar.net',
'https://api.dam.rasadyaar.net', 'https://api.dam.rasadyaar.net',
'https://dam.rasadyar.net/'
'http://localhost:3000', 'http://localhost:3000',
'http://192.168.88.130:3000', 'http://192.168.88.130:3000',
'https://rasaddam-front.liara.run' 'https://rasaddam-front.liara.run'
@@ -291,7 +292,8 @@ CORS_ALLOWED_ORIGINS = (
'http://localhost:3000', 'http://localhost:3000',
'http://192.168.88.130:3000', 'http://192.168.88.130:3000',
'https://rasadyar.net', 'https://rasadyar.net',
'https://rasaddam-front.liara.run' 'https://rasaddam-front.liara.run',
'https://dam.rasadyar.net/'
) )
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

View File

@@ -5,6 +5,7 @@ from apps.authorization.api.v1.serializers import (
PermissionSerializer, PermissionSerializer,
UserRelationSerializer UserRelationSerializer
) )
from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
from apps.authorization.models import ( from apps.authorization.models import (
Role, Role,
@@ -12,6 +13,7 @@ from apps.authorization.models import (
UserRelations UserRelations
) )
from rest_framework import viewsets from rest_framework import viewsets
from django.db import transaction
class RoleViewSet(viewsets.ModelViewSet): class RoleViewSet(viewsets.ModelViewSet):
@@ -27,6 +29,17 @@ class PermissionViewSet(viewsets.ModelViewSet):
queryset = Permissions.objects.all() queryset = Permissions.objects.all()
serializer_class = PermissionSerializer serializer_class = PermissionSerializer
@action(
methods=['get'],
detail=False,
url_path='get_user_permissions',
url_name='get_user_permissions',
name='get_user_permissions'
)
@transaction.atomic
def get_user_permissions(self, request):
pass
class UserRelationViewSet(viewsets.ModelViewSet): class UserRelationViewSet(viewsets.ModelViewSet):
""" Crud Operations for User Relations """ """ Crud Operations for User Relations """

View File

@@ -14,9 +14,17 @@ class PermissionSerializer(serializers.ModelSerializer):
fields = [ fields = [
'id', 'id',
'name', 'name',
'description' 'description',
'category',
'page'
] ]
def to_representation(self, instance):
representation = super().to_representation(instance)
representation['name'] = 'Hello'
return representation
class RoleSerializer(serializers.ModelSerializer): class RoleSerializer(serializers.ModelSerializer):
class Meta: class Meta:
@@ -63,7 +71,14 @@ class UserRelationSerializer(serializers.ModelSerializer):
if instance.role: if instance.role:
representation['role'] = RoleSerializer(instance.role).data representation['role'] = RoleSerializer(instance.role).data
if instance.permissions: if instance.permissions:
representation['permissions'] = PermissionSerializer(instance.permissions, many=True).data permissions = instance.permissions.all()
pages = {}
for permission in permissions:
if permission.page.name not in pages.keys():
pages.update({
f'{permission.page.name}': permission.page.permission_page.all().values('name')
})
representation['perms'] = pages
return representation return representation

View File

@@ -0,0 +1,49 @@
# Generated by Django 5.0 on 2025-05-31 12:01
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authorization', '0014_permissions_creator_info_permissions_modifier_info_and_more'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='permissions',
name='category',
field=models.CharField(choices=[('api', 'Api'), ('page', 'Page َAccess'), ('element', 'UI Element'), ('feature', 'Feature / Action')], default='api', max_length=50),
),
migrations.AddField(
model_name='permissions',
name='meta',
field=models.JSONField(default=dict),
),
migrations.CreateModel(
name='Page',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_date', models.DateTimeField(auto_now_add=True)),
('modify_date', models.DateTimeField(auto_now=True)),
('creator_info', models.CharField(max_length=100, null=True)),
('modifier_info', models.CharField(max_length=100, null=True)),
('trash', models.BooleanField(default=False)),
('code', models.CharField(max_length=100, unique=True)),
('name', models.CharField(max_length=255)),
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createddby', to=settings.AUTH_USER_MODEL)),
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
],
options={
'abstract': False,
},
),
migrations.AddField(
model_name='permissions',
name='page',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='permission_page', to='authorization.page'),
),
]

View File

@@ -5,9 +5,42 @@ from apps.core.models import BaseModel
# Create your models here. # Create your models here.
class Page(BaseModel):
""" every front-end page on system """
code = models.CharField(max_length=100, unique=True)
name = models.CharField(max_length=255)
def __str__(self):
return f'{self.name}-{self.code}'
def save(self, *args, **kwargs):
super(Page, self).save(*args, **kwargs)
class Permissions(BaseModel): class Permissions(BaseModel):
""" permission level of users """
name = models.CharField(max_length=50) name = models.CharField(max_length=50)
description = models.TextField(max_length=500) description = models.TextField(max_length=500)
category_choices = (
('api', 'Api'),
('page', 'Page َAccess'),
('element', 'UI Element'),
('feature', 'Feature / Action')
)
category = models.CharField(
max_length=50,
choices=category_choices,
default='api'
)
meta = models.JSONField(default=dict)
page = models.ForeignKey(
Page,
on_delete=models.CASCADE,
related_name='permission_page',
null=True
)
def __str__(self): def __str__(self):
return f'{self.name}-{self.description}' return f'{self.name}-{self.description}'

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.0 on 2025-05-31 12:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tag', '0021_allocatedtags_species_code'),
]
operations = [
migrations.AlterField(
model_name='tagassignment',
name='status',
field=models.CharField(choices=[('A', 'Accept'), ('W', 'Waiting'), ('C', 'Cancel'), ('E', 'Exited')], default='W', max_length=1),
),
]