How to check user type after login ? DJANGO
I have two user types in my application. How do I check user type after login? My login view extends django's LoginView. In my Login View, i tried with form_valid, but I think it does validation before authentication.
models.py
class CustomUser(AbstractUser):
is_client = models.BooleanField(default=False)
is_supermarket = models.BooleanField(default=False)
def __str__(self):
return self.username
views.py
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
#check if the user is logged in and redirect to home page
if request.user.is_authenticated:
return redirect('produtos:home')
return super(LoginView, self).get(request, *args, **kwargs)
Is this what you need?
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
#check if the user is logged in and redirect to home page
if request.user.is_authenticated:
return redirect('produtos:home')
if request.user.is_supermarket:
return redirect('supermarket-login') #your unique login page for supermarket user
return super(LoginView, self).get(request, *args, **kwargs)
I don't know if it's the best approach, but I get the expected behavior
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return redirect('produtos:home')
return super(LoginView, self).get(request, *args, **kwargs)
def form_valid(self, form):
if form.get_user().is_supermarket:
self.request.session.flush()
logout(self.request)
return redirect('login')
return super().form_valid(form)