Django Rest Framework/Djoser отправка информации о ролях на фронтенд (Vue)

Я работаю над простым сайтом с функцией входа в систему. Для обработки auth в бэкенде я использую библиотеку Djoser. Функциональность входа работает. Однако теперь я хочу создать сайт на фронтенде, который имеет ограниченный доступ на основе ролей пользователей.

Я хочу, чтобы если пользователь является администратором/сотрудником, то на фронтенде сайта была другая страница в навигационной панели. Поэтому мой вопрос заключается в том, как я должен это сделать. Моя первая мысль заключается в том, что когда пользователь входит в систему, то токен отправляется на фронтенд и сохраняется, а затем вместе с токеном я также отправляю роль пользователя и сохраняю ее. Однако я не уверен, как расширить Djoser для этого.

Другим вариантом было бы просто сказать, что после того, как пользователь вошел в систему, получил токен и сохранил его во фронтенде, я бы сделал последующий запрос к бэкенду, чтобы получить информацию о пользователе, включая его роль, и сохранить ее тоже. Это, конечно, потребует 2 вызова бэкенда вместо одного, как в первом варианте.

Мне кажется оптимальным использовать первый вариант, однако я не уверен, как расширить путь входа Djoser для отправки токена и роли пользователя.

Любая помощь или советы будут приняты с благодарностью!

Ладно, я сам догадался. Оставляю это здесь, если кому-то понадобится.

Сначала я создал файл сериализатора в каталоге моего проекта (оригинальное приложение). Затем я взял TokenSerializer из Djoser и расширил его до следующего,

from rest_framework import serializers
from djoser.conf import settings

class TokenSerializer(serializers.ModelSerializer):
    auth_token = serializers.CharField(source="key")
    is_staff = serializers.BooleanField(source="user.is_staff", read_only=True, default=False)

    class Meta:
        model = settings.TOKEN_MODEL
        fields = ("auth_token", "is_staff")

Я не знал, что можно использовать ключевое слово source, с помощью которого я могу получить доступ к модели пользователя, прикрепленной к токену, и получить поле is_staff.

Это теперь делает так, что пользователь запрашивает логин в /auth/token/login/, с данными для входа, в ответ он получает токен и информацию о том, установлено ли у пользователя поле is_staff.

Вернуться на верх