I would like to check if a user is logged in via social authentication or using the django default authentication.
something like
if user.social_auth = true?
I would like to check if a user is logged in via social authentication or using the django default authentication.
something like
if user.social_auth = true?
I have same problem to recognize social logged-in users by python-social-auth and I should specify a separate tab for them in navigation bar to complete their profile page. Of course if a user has logged-in through social auth, no password has been set for him\her in DB. So I used has_usable_password()
method (django.contrib.auth) for this propose. For exp:
{% if user.has_usable_password %}
<a class="dropdown-item" href="{% url 'password_change' %}">Change password</a>
{% elif not user.has_usable_password %}
<a class="dropdown-item" href="{% url 'set_pass' %}">Set password</a>
Obviously this tip will helpful as long as the user doesn't set password.
Currently, the django-social-auth is deprecated. You can use python-social-auth instead.
In that case, you should use:
user.social_auth.filter(provider='BACKEND_NAME')
For instance, if current user is authenticated by Google Account:
if user.is_authenticated:
if user.social_auth.filter(provider='google-oauth2'):
print 'user is using Google Account!'
else:
print 'user is using Django default authentication or another social provider'
From Python:
user.social_auth.exists()
will return True
if user is social, False
otherwise.
From template:
{% if not backends.associated %}
<code if user is NOT social>
{% else %}
<code if user is social>
{% endif %}
The backends
context variable is automatically set in Django templates when you include the python-social-auth app in your Django project's config.
Ok after doing some research i came up with this solution to make sure if a user is authenticated using any social provider or just the default django auth. Check here for moreinfo..