Djangotenants仅在公共架构中创建用户

2024-09-24 00:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Saleor Web框架(https://github.com/mirumee/saleor-platform)建立Django租户(https://django-tenants.readthedocs.io/en/latest/

我已经成功地为两个不同的站点启动并运行了Saleor GraphQL端点。但是,我的用户必须使用公共模式创建,否则登录过程不起作用

例如,如果运行./manage.py create_tenant --domain-domain=newtenant.net --schema_name=new_tenant --email=new@gmail.com,这将不起作用。但是运行./manage.py create_tenant --domain-domain=newtenant.net --schema_name=public --email=new@gmail.com是有效的

在公共模式中创建的问题是,创建的用户将有权访问所有租户

从my settings.py中提取

SHARED_APPS = [
    "django_tenants",
    "saleor.clients",

    # Django modules
    "django.contrib.contenttypes",
    "django.contrib.sites",
    "django.contrib.staticfiles",
    "django.contrib.auth",
    "django.contrib.postgres",
    "storages",
    
    # Local apps
    "saleor.plugins",
    "saleor.account",
    "saleor.discount",
    "saleor.giftcard",
    "saleor.product",
    "saleor.checkout",
    "saleor.core",
    "saleor.graphql",
    "saleor.menu",
    "saleor.order",
    "saleor.seo",
    "saleor.shipping",
    "saleor.search",
    "saleor.site",

]

TENANT_APPS = (
    # The following Django contrib apps must be in TENANT_APPS
    "django.contrib.contenttypes",
    "django.contrib.sites",
    "django.contrib.staticfiles",
    "django.contrib.auth",
    "django.contrib.postgres",
    "storages",
    # Django modules
    
    # Local apps
    "saleor.plugins",
    "saleor.account",
    "saleor.discount",
    "saleor.giftcard",
    "saleor.product",
    "saleor.checkout",
    "saleor.core",
    "saleor.graphql",
    "saleor.menu",
    "saleor.order",
    "saleor.seo",
    "saleor.shipping",
    "saleor.search",
    "saleor.site",
    "saleor.data_feeds",
    "saleor.page",
    "saleor.payment",
    "saleor.warehouse",
    "saleor.webhook",
    "saleor.wishlist",
    "saleor.app",

    # External apps
    "versatileimagefield",
    "django_measurement",
    "django_prices",
    "django_prices_openexchangerates",
    "django_prices_vatlayer",
    "graphene_django",
    "mptt",
    "django_countries",
    "django_filters",
    "phonenumber_field",
)

INSTALLED_APPS = list(SHARED_APPS) + [app for app in TENANT_APPS if app not in SHARED_APPS]

TENANT_MODEL = "clients.Client" # app.Model

TENANT_DOMAIN_MODEL = "clients.Domain"  # app.Model

感谢您的帮助


Tags: appsdjangopycomappnewdomaincontrib