from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required from django.contrib.auth.hashers import make_password from .forms import PasswordSelectionForm from .password_utils import generate_random_password, generate_pronounceable_password, generate_passphrase def generate_passwords(strategy): if strategy == 'random': return [generate_random_password() for _ in range(5)] elif strategy == 'pronounceable': return [generate_pronounceable_password() for _ in range(5)] elif strategy == 'passphrase': return [generate_passphrase() for _ in range(5)] else: return [] def select_password(request): if request.method == 'POST' and 'generate' not in request.POST: form = PasswordSelectionForm(request.POST) if form.is_valid(): password = form.cleaned_data['password'] generated_passwords = request.session.get('generated_passwords', []) if password not in generated_passwords: form.add_error('password', 'Invalid password selected.') else: user = request.user user.password = make_password(password) user.save() return redirect('success') else: strategy = request.GET.get('strategy', 'random') passwords = generate_passwords(strategy) request.session['generated_passwords'] = passwords # Store generated passwords in session form = PasswordSelectionForm(passwords=passwords, initial={'strategy': strategy}) return render(request, 'users/select_password.html', {'form': form}) # @login_required def success(request): return render(request, 'users/success.html')