Making login process less dependent on django.contrib.auth