def authenticate_user_send_otp(self, request, **kwargs):
     if request.method != 'POST':
         return HttpResponse(json.dumps({"message":"method not allowed"}), content_type="application/json",status=401)
     try:
         load = json.loads(request.body)
     except:
         return HttpResponse(content_type="application/json", status=404)
     email = load.get('email_id')
     phone_number = load.get('phone_number')
     if not phone_number and not email:
         return HttpBadRequest("phone_number or email is required")
     try:
         if phone_number:
             phone_number = format_phone_number(phone_number)
             logger.info('OTP request received. Mobile: {0}'.format(phone_number))
             user_obj = afterbuy_model.Consumer.objects.get(phone_number=phone_number).user
             otp = otp_handler.get_otp(user=user_obj)
             message = afterbuy_utils.get_template('SEND_OTP').format(otp)
             send_job_to_queue('send_otp', {'phone_number': phone_number,
                                            'message': message, "sms_client": settings.SMS_CLIENT})
             logger.info('OTP sent to mobile {0}'.format(phone_number))
             data = {'status': 1, 'message': "OTP sent_successfully"}
             #Send email if email address exist
         if email:
             try:
                 consumer_obj = afterbuy_model.Consumer.objects.get(user__email=email, is_email_verified=True)
                 site = RequestSite(request)
                 afterbuy_model.EmailToken.objects.create_email_token(consumer_obj, email, site, trigger_mail='forgot-password')
                 data = {'status': 1, 'message': "Password reset link sent successfully"}
                 return HttpResponse(json.dumps(data), content_type="application/json")
             except Exception as ex:
                     log_message = "new user :{0}".format(ex)
                     logger.info(log_message)
                     data = {'status': 0, 'message': "Either your email is not verified or its not exist"}
     except Exception as ex:
         logger.error('Invalid details, mobile {0} and exception {1}'.format(request.POST.get('phone_number', ''),ex))
         data = {'status': 0, 'message': "inavlid phone_number/email_id"}
     return HttpResponse(json.dumps(data), content_type="application/json")
def auth_login(request):
    user = getattr(request, 'user', None)
    if hasattr(user, 'is_authenticated') and user.is_authenticated():
        return HttpResponseRedirect(redirect_url(request))

    c = {}
    c.update(csrf(request))
    if request.POST:
        username = request.POST.get('username')
        mobile = request.POST.get('mobile')
        password = request.POST['password']
        if username:
            user = authenticate(username=username, password=password)
        if mobile:
            mobile = format_phone_number(mobile)
            user_profile = models.UserProfile.objects.filter(phone_number=mobile)[0]
            user = authenticate(username=user_profile.user.username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect(redirect_url(request))
        return HttpResponseRedirect(str(request.META.get('HTTP_REFERER')))
    else:
        return render(request, 'login.html')