Beispiel #1
0
def register_view(request):
    form = UserRegistrationForm(request.POST or None)
    if request.user.is_authenticated():
        return redirect('login_view')
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            email = form.cleaned_data['email']
            password = form.cleaned_data['password1']
            salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
            activation_key = hashlib.sha1(salt + email).hexdigest()

            user = User.objects.get(email=email)
            # TODO: проверка на существующие активации
            new_activation = UserActivation(user=user, activation_key=activation_key,
                                            request_time=timezone.now())
            new_activation.save()
            mailing.confirm_email(email, activation_key)

            user = auth.authenticate(username=email, password=password)
            auth.login(request, user)

            return redirect('index_view')
        else:
            messages.warning(request, "Form is not valid!")
            return render(request, 'reg.html', {'form': form})
    return render(request, 'reg.html', {'form': form})
Beispiel #2
0
def register_view(request):
    form = UserRegistrationForm(request.POST or None, request.FILES or None)
    if request.user.is_authenticated():
        return redirect('login_view')
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            email = form.cleaned_data['email']
            password = form.cleaned_data['password1']
            activation_key = signing.dumps({'email': email})
            user = User.objects.get(email=email)
            UserActivation.objects.filter(user=user).delete()

            new_activation = UserActivation(user=user, activation_key=activation_key,
                                            request_time=timezone.now())
            new_activation.save()
            mailing.confirm_email(email, activation_key)

            notification = Notification(user=user,
                                        text='Пожалуйста, активируйте ваш профиль, перейдя по ссылке в письме на вашем почтовом ящике')
            notification.save()

            user = auth.authenticate(username=email, password=password)
            auth.login(request, user)

            return redirect('index_view')
        else:
            messages.warning(request, "Здесь есть неверно заполненные поля!")
            return render(request, 'reg.html', {'form': form})
    return render(request, 'reg.html', {'form': form})
Beispiel #3
0
def resetpass_view(request):
    if request.user.is_authenticated():
        return redirect('index_view')
    form = ResetPassForm(request.POST or None)
    shortcut = lambda: render(request, 'resetpass.html', {"form": form})
    if request.method == 'POST':
        if form.is_valid():
            email = form.cleaned_data['email']
            new_pass = str(random.randint(100000, 999999))
            try:
                user = User.objects.get(email=email)
            except User.DoesNotExist:
                messages.warning(request, "Такого адреса нет в базе!")
                return shortcut()
            if not user.is_active:
                messages.warning(request, "Ваш аккаунт еще не активирован")
                UserActivation.objects.filter(user=user).delete()
                activation_key = signing.dumps({'email': email})
                new_activation = UserActivation(user=user, activation_key=activation_key,
                                                request_time=timezone.now())
                new_activation.save()
                mailing.confirm_email(email, activation_key)
                messages.warning(request,
                                 "Мы отправили вам новое письмо для активации")
                return shortcut()
            user.set_password(new_pass)
            user.save()
            mailing.resetpass_email(email, new_pass)
            messages.success(request, "Пароль изменен. Письмо отправлено на почту!")
    return shortcut()