Пример #1
0
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")
Пример #2
0
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()
Пример #3
0
def RegisterUser(request):
    auth_basic_form = SignupFormOnlyEmail()
    if request.method == 'POST':
        user_form = SignupFormOnlyEmail(request.POST)

        if user_form.is_valid():
            try:
                user = User.objects.get(email__iexact=request.POST['email'])
            except Exception as e:
                if 'does not exist' in str(e):
                    user = user_form.save()
                    user_auth = authenticate(identification=user.email,
                                             check_password=False)
                    if user_auth is not None:
                        login(request, user_auth)
                        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) + ')')
                        request.session['register'] = True
                        return redirect("/change_user/")
                    else:
                        login_form = AuthenticationForm()
                        diccionary = {
                            'messageReg': 'User already exists',
                            'login': login_form,
                            'auth_basic': auth_basic_form,
                        }
                        return render(request, "login.html", diccionary)
                else:
                    login_form = AuthenticationForm()
                    diccionary = {
                        'messageReg': 'User already exists',
                        'login': login_form,
                        'auth_basic': auth_basic_form,
                    }
                    return render(request, "login.html", diccionary)
        else:
            message = 'Invalid data. Please use different information to register'
            if 'email' in user_form.errors:
                message = user_form.errors['email']
            login_form = AuthenticationForm()
            login_form.fields['identification'].label = 'Email'
            diccionary = {
                'messageReg': message,
                'login': login_form,
                'auth_basic': auth_basic_form,
            }
            return render(request, "login.html", diccionary)
    else:
        return redirect("/login/")
Пример #4
0
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])
Пример #5
0
    def get_context_data(self, **kwargs):

        context = super(IndexView, self).get_context_data(**kwargs)

        context['form'] = AuthenticationForm()

        return context
Пример #6
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)
Пример #7
0
def login(request):
    context = {
        'signin': AuthenticationForm(),
        'signup': SignupForm(),
        'signup_opt': SignupOptionalForm()
    }

    if request.method == 'POST':
        if request.POST['action-type'] == 'signup':
            form = SignupOptionalForm(request.POST)

            if not form.is_valid():
                context['signup'] = SignupOptionalForm(request.POST)
                context['signup_opt'] = form
                context['default_tab'] = 1
            else:
                context['signup_opt'] = SignupOptionalForm(request.POST)
                context['action'] = 'signup'
                context['default_tab'] = 1
                response = views.signup(
                    request,
                    signup_form=SignupForm,
                    template_name='cs_auth/login.jinja2',
                    extra_context=context,
                )

                # It redirects on success: we intercept add the extra
                # information
                if isinstance(response, http.HttpResponseRedirect):
                    # Fill extra info in signup form
                    aux = request.POST
                    success_url = '/accounts/%s' % aux['username']
                    user = User.objects.get(username=aux['username'])
                    user.first_name = aux['first_name']
                    user.last_name = aux['last_name']

                    # Fill extra profile info
                    form = SignupOptionalForm(request.POST)
                    form.is_valid()
                    aux = form.cleaned_data
                    user.profile.about_me = aux['about_me']
                    user.profile.gender = aux['gender']
                    user.profile.date_of_birth = aux['date_of_birth']

                    # Save modifications and go
                    user.save()
                    user.profile.save()

                    return redirect(success_url)
                return response
        else:
            context['action'] = 'signin'
            return views.signin(
                request,
                template_name='cs_auth/login.jinja2',
                extra_context=context,
            )

    return render(request, 'cs_auth/login.jinja2', context)
Пример #8
0
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])
Пример #9
0
    def get_context_data(self, **kwargs):

        return super().get_context_data(
            signin=AuthenticationForm(),
            signup=SignupForm(),
            signup_opt=SignupOptionalForm(),
            **kwargs
        )
Пример #10
0
def member_forms(request):
    """
    Signin and signup forms (for the upper panel)
    """
    additions = {
        'signup_form': I4PSignupForm(),
        'signin_form': AuthenticationForm(),
    }
    return additions
Пример #11
0
def home(request):
	if request.user.is_authenticated():
		if request.user.username == "admin":
			return redirect("admin/") 
		else:
			return redirect("accounts/%s" % request.user)
	else:
		form = AuthenticationForm()
		return render_to_response('dashboard/home.html',{'form':form,}, context_instance=RequestContext(request)) 
Пример #12
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':"输入数据有误。"}
Пример #13
0
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
Пример #14
0
    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())