Exemple #1
0
def password_reset(request, form_class=PasswordResetForm):
    if 'POST' == request.method:
        form = form_class(request.POST)
    else:
        form = form_class()

    if form.is_valid():
        user = UserModel.objects.get(email=form.cleaned_data['email'])
        url = 'http://%s%s' % (hostname, reverse('auth:password_change'))

        url = wrap_url(url,
                       uid=user.id,
                       onetime=False,
                       action='password_change')
        args = {'domain': hostname, 'url': url, 'user': user}
        if email_template(user.email, 'account/mail/password_reset', **args):
            return message(request, _('Check the mail please'))
        else:
            return message(
                request,
                _('Unfortunately we could not send you email in current time. Please, try later'
                  ))

    return {
        'form': form,
    }
Exemple #2
0
def email_change(request):
    if 'POST' == request.method:
        form = EmailChangeForm(request.POST)
    else:
        form = EmailChangeForm()

    if form.is_valid():
        email = form.cleaned_data['email']
        url = 'http://%s%s' % (hostname, reverse('auth:email_change_done'))
        url = wrap_url(url,
                       uid=request.user.id,
                       action='new_email',
                       email=email)
        args = {
            'domain': hostname,
            'url': url,
            'email': email,
        }
        if email_template(email, 'account/mail/email_change', **args):
            return message(request, _('Check the mail please'))
        else:
            return message(
                request,
                _('Unfortunately we could not send you email in current time. Please, try later'
                  ))
    return {
        'form': form,
    }
Exemple #3
0
def registration(request, form_class=RegistrationForm):
    if not settings.ACCOUNT_REGISTRATION_ENABLED:
        return message(request, _('Sorry. Registration is disabled.'))
    if request.user.is_authenticated():
        return message(request, _('You have to logout before registration'))

    if 'POST' == request.method:
        form = form_class(request.POST, request.FILES)
    else:
        form = form_class()

    if form.is_valid():
        user = form.save()

        signals.account_created.send(None, user=user, request=request)
        password = form.cleaned_data['password']

        if settings.ACCOUNT_ACTIVATION_REQUIRED:
            url = 'http://%s%s' % (hostname,
                                   reverse('auth:registration_complete'))
            url = wrap_url(url, uid=user.id, action='activation')
            params = {
                'domain': hostname,
                'login': user.username,
                'url': url,
                'password': password
            }
            if email_template(user.email, 'account/mail/activation_required',
                              **params):
                return HttpResponseRedirect(
                    reverse('auth:activation_required'))
            else:
                user.delete()
                return message(
                    request,
                    _('The error was occuried while sending email with activation code. Account was not created. Please, try later.'
                      ))
        else:
            user.backend = 'django.contrib.auth.backends.ModelBackend'
            auth.login(request, user)
            args = {'domain': hostname, 'user': user, 'password': password}
            email_template(user.email, 'account/mail/registration_complete',
                           **args)
            return redirect(
                reverse(settings.ACCOUNT_REGISTRATION_REDIRECT_URLNAME))

    return {
        'form': form,
    }
Exemple #4
0
def email_change(request):
    if 'POST' == request.method:
        form = EmailChangeForm(request.POST)
    else:
        form = EmailChangeForm()

    if form.is_valid():
        email = form.cleaned_data['email']
        url = 'http://%s%s' % (hostname, reverse('auth_email_change_done'))
        url = wrap_url(url, uid=request.user.id, action='new_email', email=email)
        args = {'domain': hostname, 'url': url, 'email': email,}
        if email_template(email, 'account/mail/email_change', **args):
            return message(request, _('Check the mail please'))
        else:
            return message(request, _('Unfortunately we could not send you email in current time. Please, try later'))
    return {'form': form,}
Exemple #5
0
def registration(request, form_class=RegistrationForm):
    if not settings.ACCOUNT_REGISTRATION_ENABLED:
        return message_view(request, _('Sorry. Registration is disabled.'))
    if request.user.is_authenticated():
        return message_view(request, _('You have to logout before registration'))

    if 'POST' == request.method:
        form = form_class(request.POST, request.FILES)
    else:
        form = form_class()

    if form.is_valid():
        if form.cleaned_data['username'].endswith('mesuchesy'):
            # handling a possible spam user registration 2019/03/25
            return message_view(request, _('Sorry. Registration is disabled.'))

        user = form.save(request)

        user_signed_up.send(None, user=user, request=request)
        password = form.cleaned_data['password1']

        hostname = Site.objects.get_current().domain
        if settings.ACCOUNT_ACTIVATION_REQUIRED:
            url = 'http://%s%s' % (hostname, reverse('registration_complete'))
            url = wrap_url(url, uid=user.id, action='activation')
            params = {'domain': hostname, 'login': user.username, 'url': url,
                      'password': password}
            if email_template(user.email, 'account/mail/activation_required', **params):
                next_url = reverse('activation_required')
                if form.cleaned_data.get('signup_ann', False):
                    next_url += '?email=' + user.email
                return HttpResponseRedirect(next_url)
            else:
                user.delete()
                msg = ('The error was occuried while sending email '
                       'with activation code. Account was not created. '
                       'Please, try later.')
                return message_view(request, _(msg))
        else:
            user.backend = 'django.contrib.auth.backends.ModelBackend'
            auth.login(request, user)
            args = {'domain': hostname, 'user': user, 'password': password}
            email_template(user.email, 'account/mail/registration_complete', **args)
            return redirect(reverse(settings.ACCOUNT_REGISTRATION_REDIRECT_URLNAME))

    return {'form': form}
Exemple #6
0
def password_reset(request, form_class=PasswordResetForm):
    if 'POST' == request.method:
        form = form_class(request.POST)
    else:
        form = form_class()

    if form.is_valid():
        user = UserModel.objects.get(email=form.cleaned_data['email'])
        url = 'http://%s%s' % (hostname, reverse('auth_password_change'))
        url = wrap_url(url, uid=user.id, onetime=False,
            action='password_change')
        args = {'domain': hostname, 'url': url, 'user': user}
        if email_template(user.email, 'account/mail/password_reset', **args):
            return message(request, _('Check the mail please'))
        else:
            return message(request, _('''Unfortunately we could not send you
                email in current time. Please, try later'''))

    return {'form': form,}
Exemple #7
0
def registration(request, form_class=RegistrationForm):
    if not REGISTRATION_ENABLED:
        return message(request, _('Sorry. Registration is disabled.'))
    if request.user.is_authenticated():
        return message(request, _('You have to logout before registration'))

    if 'POST' == request.method:
        form = form_class(request.POST, request.FILES)
    else:
        form = form_class()

    if form.is_valid():
        user = form.save()

        signals.account_created.send(None, user=user, request=request)
        password = form.cleaned_data['password']

        if ACTIVATION_REQUIRED:
            url = 'http://%s%s' % (hostname, reverse('registration_complete'))
            url = wrap_url(url, uid=user.id, action='activation')
            params = {'domain': hostname, 'login': user.username, 'url': url, 'password': password}
            if email_template(user.email, 'account/mail/activation_required',
                **params):
                return HttpResponseRedirect(reverse('activation_required'))
            else:
                user.delete()
                return message(request, _('''The error was occuried while
                    sending email with activation code. Account was not
                    created. Please, try later.'''))
        else:
            user.backend = 'django.contrib.auth.backends.ModelBackend'
            auth.login(request, user)
            args = {'domain': hostname, 'user': user, 'password': password}
            email_template(user.email, 'account/mail/registration_complete',
                **args)
            return redirect(reverse(REGISTRATION_REDIRECT_URLNAME))

    return {'form': form,}
Exemple #8
0
def register_openid(request, template_name='auth/registration_form.html'):
    """
    register an openid.

    If user is already a member he can associate its openid with
    its account.

    A new account could also be created and automatically associated
    to the openid.
    """

    errors = None
    is_redirect = False
    next = clean_next(request.GET.get('next'))
    openid_ = request.session.get('openid', None)
    if not openid_:
        return HttpResponseRedirect(reverse('auth_login'))

    nickname = openid_.sreg.get('nickname', '')
    email = openid_.sreg.get('email', '')
    fullname = openid_.sreg.get('fullname', '')
    if fullname:
        _name = fullname.split(' ')
        lastname = _name[-1]
        firstname = ' '.join(_name[:-1])
    else:
        lastname, firstname = '', ''

    form = RegistrationForm(initial={
        'username': nickname,
        'email': email,
        'password': UNUSABLE_PASSWORD_PREFIX,
        'password_dup': UNUSABLE_PASSWORD_PREFIX,
        'first_name': firstname,
        'last_name': lastname,
    })
    openid_form = OpenidVerifyForm(initial={
        'next': next,
        'username': nickname,
    }, auto_id='openid_%s')

    if request.POST:
        just_completed = False
        if 'bnewaccount' in request.POST.keys():
            form = RegistrationForm(data=request.POST)
            if form.is_valid():
                is_redirect = True
                user = form.save()
                user.is_active = False   # set inactive for user to activate via the link in confirmation email
                user.set_unusable_password()
                user.save()

                # Add membership to the 'openid' group.
                # We do it manually instead of via user.grant_openid() because
                # through a series of dependencies, we can't make that call until
                # after the user has logged in for the first time.
                user.groups.add(Group.objects.get(name='openid'))

                # make association with openid
                uassoc = UserAssociation(openid_url=str(openid_),
                                         user_id=user.id)
                uassoc.save()

                #sending out activating email
                #this block of code were taken from account.views.registration
                hostname = Site.objects.get_current().domain
                url = 'http://%s%s' % (hostname, reverse('registration_complete'))
                url = wrap_url(url, uid=user.id, action='activation')
                params = {'domain': hostname, 'login': user.username, 'url': url}
                if email_template(user.email, 'account/mail/activation_required', **params):
                    #logging
                    log.info('username=%s clientip=%s action=user_signup', form.cleaned_data.get('username', ''), request.META.get('REMOTE_ADDR', ''))

                    next_url = reverse('activation_required')
                    print form.cleaned_data
                    if form.cleaned_data.get('signup_ann', False):
                        next_url += '?email=' + form.cleaned_data.get('email', '')
                    return HttpResponseRedirect(next_url)
                else:
                    user.delete()
                    msg = ('The error occurred while sending email '
                           'with activation code. Account was not created. '
                           'Please, try later.')
                    return message_view(request, _(msg))

        elif 'bverify' in request.POST.keys():
            form2 = OpenidVerifyForm(request.POST)
            if form2.is_valid():
                is_redirect = True
                next_url = clean_next(form2.cleaned_data.get('next'))
                user = form2.get_user()
                user.grant_openid()  # Add membership to the 'openid' group.

                # Don't let the association happens if there already is one.
                if UserAssociation.objects.filter(user=user.id).count() > 0:
                    return render_login_form(request,
                                             next_url,
                         message='Your account can only be associated with one OpenID URL at a time.')

                else:
                    uassoc = UserAssociation(openid_url=str(openid_),
                            user_id=user.id)
                    uassoc.save()
                    auth.login(request, user)
            else:
                # Take the first error message given.
                errors = form2.errors.popitem()[1]

        # redirect, can redirect only if forms are valid.
        if is_redirect:
            return HttpResponseRedirect(next_url)

    return render_to_response(request,
                              template_name,
                              {'form': form,
                               'openid_form': openid_form,
                               'errorlist': errors})
Exemple #9
0
 def process_url(url, **kwargs):
    url = wrap_url(url, **kwargs)
    return url.split('?')[0], cgi.parse_qs(url.split('?')[1])