Angular + Django Backend. Как войти в систему на основе типов пользователей в Django

Я столкнулся с проблемой, как интегрировать права пользователя, например, если is_superuser равен False, то вход в компонент Author, а если Superuser равен True, то вход в компонент Admin в Angular. Надеюсь, кто-нибудь сможет помочь

Что я хочу, 1) Если is_superuser равен True в django, то войти в компонент Admin / панель администратора 2) Если is_superuser равен False в django, то войти в компонент Author / Author dashboard

class MyAuthToken(auth_views.ObtainAuthToken):
    serializer_class = MyAuthTokenSerializer
    @action(detail=True, methods=['POST'])
    def post(self, request, *args, **kwargs):
        response = super(MyAuthToken, self).post(request, *args, **kwargs)
        token = Token.objects.get(key=response.data['token'])
        user = CustomUser.objects.get(id=token.user_id)
        users = json.dumps(UserSerializer(user).data)
        id = json.loads(users)["id"]
        email = json.loads(users)["email"]
        is_superuser = json.loads(users)["is_superuser"]

        return Response({'id': id, 'email': email, 'is_superuser': is_superuser, 
'token': token.key})

наконец-то решил свою проблему. Я вернул json-ответ, который будет включать некоторые данные пользователя на front end. затем вызвал его на front end. Вот как я сделал это в своем фронт-энде. Я записал консольный лог, чтобы проверить результаты

interface TokenObj {
  id: number
  email: string
  is_superuser: boolean;
  token: string;
}

  _id: number;
  _email: string;
  _is_superuser: boolean;
  _token: any;
  mrToken: string;
  loginUser() {
    this.service.userLogin(this.authForm.value).subscribe(
      (result: TokenObj) => {
        this._token = this.cookieService.set('mr-token', result.token);
        this._id = result.id
        this._email = result.email
        this._is_superuser = result.is_superuser
        this._token = result.token
        console.log("******** id " + this._id);
        console.log("******** email " + this._email);
        console.log("******** is_superuser " + this._is_superuser);
        console.log("******** token " + this._token);   
        if (this._is_superuser === true && this._token){
          this.router.navigateByUrl('/approuting');
          }
        else if (this._is_superuser === false && this._token){
            this.router.navigateByUrl('/approuting/employee');
          }    
      },
      error => console.log(alert("wrong credentials"))
    );
  }
}

Я очень хотел опубликовать свой ответ, поэтому я создал новую учетную запись. Я надеюсь, что другой аккаунт сможет опубликовать ответы в ближайшее время. Я также надеюсь, что это найдет начинающих программистов, которые, как и я, интегрируют angular и Django для веб-разработки

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