def test_login_form(self): """ Check that the ``LoginForm`` requires both identification and password """ invalid_data_dicts = [{ 'data': { 'identification': '', 'password': '******' }, 'error': ('identification', [u'Please supply your email.']) }, { 'data': { 'identification': 'john', 'password': '******' }, 'error': ('__all__', [ u'Please enter a correct email and password. Note that fields are case-sensitive.' ]) }] for invalid_dict in invalid_data_dicts: form = AuthenticationForm(data=invalid_dict['data']) self.failIf(form.is_valid()) self.assertEqual(form.errors[invalid_dict['error'][0]], invalid_dict['error'][1]) valid_data_dicts = [{ 'identification': '*****@*****.**', 'password': '******' }] for valid_dict in valid_data_dicts: form = AuthenticationForm(valid_dict) self.failUnless(form.is_valid())
def signin_form(request, form): dajax = Dajax() form = AuthenticationForm(deserialize_form(form)) form_id = 'aform' try: dajax.remove_css_class('#'+form_id+' input', 'error') dajax.script('form_errors(false,"{0}");'.format(form_id)) if not form.is_valid(): raise Exception('Error') identification, password, remember_me = (form.cleaned_data['identification'], form.cleaned_data['password'], form.cleaned_data['remember_me']) user = authenticate(identification=identification, password=password) if user.is_active: login(request, user) if remember_me: request.session.set_expiry(userena_settings.USERENA_REMEMBER_ME_DAYS[1] * 86400) else: request.session.set_expiry(0) dajax.script('update_sign_in({0},"{1}");'.format(user.id,user.username)) except Exception as e: dajax.remove_css_class('#'+form_id+' input', 'error') print e dajax.script("form_errors(true,'{0}','{1}<br>{2}');".format(form_id,e.message,form.errors)) for error in form.errors: dajax.add_css_class('#'+form_id+' #id_%s' % error, 'error') return dajax.json()
def logins(request): #logger.debug('request.method: {0}'.format(request.method)) if request.method == 'POST': request.session.set_test_cookie() logger.debug('request.POST: {0}'.format(request.POST)) login_form = AuthenticationForm(request, request.POST) #return HttpResponse('{"error":{"text":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}', mimetype="application/json") if login_form.is_valid(): return HttpResponse('{"error":{"text":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}', mimetype="application/json") #if request.is_ajax: # identification, password, remember_me = (login_form.cleaned_data['identification'], # login_form.cleaned_data['password'], # login_form.cleaned_data['remember_me']) # user = authenticate(identification=identification, password=password) # if user is not None: # #return HttpResponseRedirect(request.REQUEST.get('next', '/')) # return HttpResponse('{"error":{"text":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}', mimetype="application/json") # else: # return HttpResponse('{"error":{"text":"Username and Password are required."}}', mimetype="application/json") else: return HttpResponse('{"error":{"text":"Username and Password are required."}}', mimetype="application/json") else: #return HttpResponseForbidden() # catch invalid ajax and all non ajax** return HttpResponse('{"error":{"text":"Username and Password are required."}}', mimetype="application/json")
def signin_form_test(request, form, success_url=None): logger.debug("signin_form") dajax = Dajax() form = AuthenticationForm(deserialize_form(form)) if form.is_valid(): identification, password, remember_me = ( form.cleaned_data['identification'], form.cleaned_data['password'], form.cleaned_data['remember_me']) user = authenticate(identification=identification, password=password) if user.is_active: login(request, user) if remember_me: request.session.set_expiry( userena_settings.USERENA_REMEMBER_ME_DAYS[1] * 86400) else: request.session.set_expiry(0) # TODO: добавить сообщения if userena_settings.USERENA_USE_MESSAGES: logger.debug(u"Message: {0}".format( _('You have been signed in.'))) messages.success(request, _('You have been signed in.'), fail_silently=True) # TODO: изменить переадресацию после регистрации #redirect_to = signin_redirect(REDIRECT_FIELD_NAME, user) redirect_to = reverse('userena_profile_detail', kwargs={'username': user.username}) logger.debug("Redirect: {0}".format(redirect_to)) else: redirect_to = reverse('userena_disabled', kwargs={'username': user.username}) logger.debug("Redirect: {0}".format(redirect_to)) dajax.remove_css_class('#signin_form div', 'error') dajax.clear('#signin_form .help-inline', 'innerHTML') dajax.redirect(redirect_to, delay=10) else: dajax.remove_css_class('#signin_form div', 'error') dajax.clear('#signin_form .help-inline', 'innerHTML') dajax.add_css_class('#signin_form div.alert-error', 'hide') try: if form.errors['__all__'] is not None: dajax.remove_css_class('#signin_form div.alert-error', 'hide') dajax.assign( '#signin_form .alert-error', 'innerHTML', "<button type='button' class='close' data-dismiss='alert'>×</button>{0}" .format(form.errors['__all__'])) except Exception, e: pass for error in form.errors: dajax.add_css_class('#signin_form #gr_id_%s' % error, 'error') #dajax.remove_css_class('#signin_form #e_id_%s' % error, 'hide') dajax.assign('#signin_form #e_id_%s' % error, 'innerHTML', form.errors[error][0])
def LoginUser(request): url_redirect = request.GET.get("next", "/") auth_basic_form = SignupFormOnlyEmail() if request.method == 'POST': login_form = AuthenticationForm(request.POST) login_form.fields['identification'].label = 'Email' if login_form.is_valid(): username = request.POST['identification'] password = request.POST['password'] user = authenticate(identification=username, password=password) if user is not None: login(request, user) x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') g = GeoIP() lat, lon = g.lat_lon(ip) #lat,lon = g.lat_lon('186.83.0.68') UserProfile.objects.filter(user=user).update( coords='POINT(' + str(lon) + ' ' + str(lat) + ')') return redirect(url_redirect) else: diccionary = { 'message': 'Invalid information', 'login': login_form, 'auth_basic': auth_basic_form, } else: diccionary = { 'message': 'Invalid information', 'login': login_form, 'auth_basic': auth_basic_form, } else: login_form = AuthenticationForm() login_form.fields['identification'].label = 'Email' diccionary = { 'login': login_form, 'auth_basic': auth_basic_form, } if 'message' in request.session: diccionary['message'] = request.session['message'] del request.session['message'] return render(request, 'login.html', diccionary)
def signin_form_test(request, form, success_url=None): logger.debug("signin_form") dajax = Dajax() form = AuthenticationForm(deserialize_form(form)) if form.is_valid(): identification, password, remember_me = (form.cleaned_data['identification'], form.cleaned_data['password'], form.cleaned_data['remember_me']) user = authenticate(identification=identification, password=password) if user.is_active: login(request, user) if remember_me: request.session.set_expiry(userena_settings.USERENA_REMEMBER_ME_DAYS[1] * 86400) else: request.session.set_expiry(0) # TODO: добавить сообщения if userena_settings.USERENA_USE_MESSAGES: logger.debug(u"Message: {0}".format(_('You have been signed in.'))) messages.success(request, _('You have been signed in.'), fail_silently=True) # TODO: изменить переадресацию после регистрации #redirect_to = signin_redirect(REDIRECT_FIELD_NAME, user) redirect_to = reverse('userena_profile_detail', kwargs={'username': user.username}) logger.debug("Redirect: {0}".format(redirect_to)) else: redirect_to = reverse('userena_disabled', kwargs={'username': user.username}) logger.debug("Redirect: {0}".format(redirect_to)) dajax.remove_css_class('#signin_form div', 'error') dajax.clear('#signin_form .help-inline', 'innerHTML') dajax.redirect(redirect_to, delay=10) else: dajax.remove_css_class('#signin_form div', 'error') dajax.clear('#signin_form .help-inline', 'innerHTML') dajax.add_css_class('#signin_form div.alert-error', 'hide') try: if form.errors['__all__'] is not None: dajax.remove_css_class('#signin_form div.alert-error', 'hide') dajax.assign('#signin_form .alert-error', 'innerHTML', "<button type='button' class='close' data-dismiss='alert'>×</button>{0}".format(form.errors['__all__'])) except Exception, e: pass for error in form.errors: dajax.add_css_class('#signin_form #gr_id_%s' % error, 'error') #dajax.remove_css_class('#signin_form #e_id_%s' % error, 'hide') dajax.assign('#signin_form #e_id_%s' % error, 'innerHTML', form.errors[error][0])
def signin(request): """ Signin using email or username with password. Signs a user in by combining email/username with password. If the combination is correct and the user :func:`is_active` the :func:`redirect_signin_function` is called with the arguments ``REDIRECT_FIELD_NAME`` and an instance of the :class:`User` who is is trying the login. The returned value of the function will be the URL that is redirected to. **Context** ``form`` Form used for authentication supplied by ``auth_form``. """ form = AuthenticationForm() if request.method == 'POST': form = AuthenticationForm(request.POST, request.FILES) if form.is_valid(): identification, password, remember_me = (form.cleaned_data['identification'], form.cleaned_data['password'], form.cleaned_data['remember_me']) user = authenticate(identification=identification, password=password) if user.is_active: login(request, user) if remember_me: request.session.set_expiry(userena_settings.USERENA_REMEMBER_ME_DAYS[1] * 86400) else: request.session.set_expiry(0) # send a signal that a user has signed in userena_signals.account_signin.send(sender=None, user=user) return {'user':{"username":user.get_full_name(), "customer_number":user.userprofile.customer_number}} else: return {'error':"无效的用户。"} else: return {'error':"输入数据有误。"}
def authapi_signin(request, auth_form=AuthenticationForm, template_name='authapi/signin_form.html', extra_context=None): form = auth_form() form = AuthenticationForm() if request.method == 'POST': form = auth_form(request.POST, request.FILES) if form.is_valid(): identification, password, remember_me = (form.cleaned_data['identification'], form.cleaned_data['password'], form.cleaned_data['remember_me']) user = authenticate(identification=identification, password=password) if user and user.is_active: login(request, user) result = True else: result = False response = HttpResponse(json.dumps(result), mimetype = u'application/json') return response