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})
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})
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()