Ограничение доступа по электронной почте пользователя Django Saleor
Я хочу попробовать настроить частный веб-сайт, где пользователи могут приобретать заказы, но при входе в систему можно просматривать только свои заказы. При входе в систему Saleor представляется наиболее полным пакетом электронной коммерции для Python/Django.
Есть ли способ, которым я могу заблокировать доступ к использованию категорий? Например, я могу создать категорию "Семья Джонсона" и выбрать только определенных пользователей, имеющих доступ к категориям "Семья Джонсона", если я одобряю их электронную почту для доступа. Затем эти пользователи будут видеть "продукты" или "заказы" специально для них в магазине.
Редактировать: Извинения, я должен спросить "как", а не "если", конечно, это можно сделать в Django, но я не был уверен, "как?"
1 ответ
Поскольку вы задали обобщенный вопрос, вот обобщенное решение:
Есть ли способ, которым я могу заблокировать доступ к использованию категорий?
Да, ты можешь. Модуль аутентификации Django имеет концепцию группы, в которой вы можете создать группу и добавить пользователей в эту группу. Затем, по вашему мнению, вы можете проверить, принадлежит ли пользователь определенной группе или нет. Вы можете сделать что-то вроде:
from django.contrib.auth.models import User, Group
#create the group
group = Group(name='Johnson Family')
group.save()
# Add user to the group
user = User.objects.get(email='some@email.id')
user.groups.add(group)
# Call this method from your view to check if user belongs to a group
def is_member(user, group_name):
return user.groups.filter(name=group_name).exists()
Затем эти пользователи будут видеть "продукты" или "заказы" специально для них в магазине.
Для этого вы всегда можете отфильтровать набор запросов, чтобы вернуть объекты, принадлежащие конкретному пользователю. например (при условии, что модель Product и Booking имеет внешний ключ для пользователя):
Product.objects.filter(user=some_user)
Booking.objects.filter(user=some_user)