Closed mameen7 closed 4 years ago
up! Wanting to know that too.
That is really up to you. Structure your project accordingly and make permission checks in Django by yourself. That is nothing that this project has to handle. This is basic permission and ownership checking stuff. django-tenant-schema offers some help in that regard by separating some data out in separate schemas, but you are still responsible by yourself to separate data access by customer.
How can you prevent that?
from django.db import connection
Polls.objects.get(customer=connection.tenant)
for example. Otherwise move the data into the tenant schema.
Thank you for responding. But what i mean is inside the admin panel, all tenants have access to the models that are for the public schema, and i'm trying to prevent that. Please can you help!
@Algebra7, that's what I'm searching too, of ways to better integrate this with django-admin.
I found a vague idea of what must be done here: https://github.com/bernardopires/django-tenant-schemas/issues/554
@NotANormalNerd, if you have more ideas about this, share, pls.
@Algebra7, this may help, along with @NotANormalNerd suggestion: https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset
i.e., use the get_queryset
method to increase the filter used in your admin page based on django.db.connection.tenant
instance
Also, if you're using the multitenancy by schema, you'll need to create different apps, at least 2, that is one for the public data (placed in shared_apps) and other for the tenants data (placed in tenant_apps). Then the django admin site of each tenant will already have the queries limited by that schema based on the models of that django app placed in tenant_apps.
I'm Using django_tenant_schemas in a project and i realized that the architecture in django tenant schemas involve giving all tenants access to public schema's data, which i don't want in my project. So my question here is, how can i prevent my tenants from accessing public schema's data.?