Я новичок в django и drf, поэтому я думаю, что это то место, где мне могут помочь.
Я строю систему посещаемости офиса.
Теперь здесь пользователи: 1. Операционный менеджер (ОМ) 2. Администратор 3. Персонал 4. Генеральный директор.OM может создать нового пользователя и назначить его администратором, персоналом или генеральным директором.Администратор, персонал и генеральный директор имеют свои собственные разрешения.
Мои вопросы - как назначить эти роли и разрешения для типов пользователей в django rest framework.Я видел документацию по пользовательскому разрешению drf, в которой говорится о расширении класса BasePermission и реализации 2 методов.
Мое требование: новый пользователь не регистрируется самостоятельно, но OM создает для него нового пользователя.
Редактировать 1:
Я реализовал этот способ.Будет ли это работать?
модель:
class User(AbstractUser):
user_type = {
('admin', 'Admin'),
('staff', 'Staff'),
('om', 'OM'),
}
user_choice = CharField(choices=user_type, blank=True, max_length=255)
сериализатор:
class UserSerializers(serializers.ModelSerializer):
first_name = serializers.ReadOnlyField()
groups = GroupSerializers(many=True)
user_type = serializers.CharField()
class Meta:
model = User
fields = ('first_name', 'last_name','address','contact', 'email', 'date_of_birth', 'branch', 'groups', 'user_type')
def user_group(self, data):
user_type = data.get("user_type", "")
email = data.get("email")
user = User.objects.get(email = 'email')# get user object from post request
if user_type == "admin":
grp = Group.objects.get_or_create(name='Admin')
user.group.add(grp)
elif user_type == "staff":
grp = Group.objects.get_or_create(name='Staff')
user.group.add(grp)
else:
grp = Group.objects.get_or_create(name='OM')
user.group.add(grp)
просмотр:
class UserCreateView(ModelViewSet):
model = User
serializer_class = UserSerializers