def validacao_senha_redefinicao(request): senha = loads(request.body)['valor'] resposta = {} tamanho_minimo = MinimumLengthValidator(8) numerica = NumericPasswordValidator() comum = CommonPasswordValidator() similar = UserAttributeSimilarityValidator(('nome', 'sobrenome', 'email'), max_similarity=0.7) # Checando se a senha tem no mínimo 8 caracteres try: tamanho_minimo.validate(senha) except ValidationError: tamanho_minimo = False # Checando se a senha é totalmente numérica try: numerica.validate(senha) except ValidationError: numerica = False # Checando se a senha é comum try: comum.validate(senha) except ValidationError: comum = False # Checando se a senha é similar a outras informações do usuário try: similar.validate(senha, request.user) except ValidationError as e: similar = False if not tamanho_minimo: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Sua senha deve conter pelo menos 8 caracteres' elif not numerica: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Sua senha não pode ser inteiramente numérica' elif not comum: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Essa senha é muito comum. Tente outra' elif not similar: status = 400 resposta['status'] = 'inválido' resposta[ 'erro'] = 'Essa senha é muito parecida com seu e-mail ou com seu nome' else: status = 200 resposta['status'] = 'válido' return JsonResponse(resposta, status=status)
def auth_redir(request): try: User_name = request.POST['name'] User_email = request.POST['email'] User_password = request.POST['password'] minlengthpass = MinimumLengthValidator() commonpass = CommonPasswordValidator() try: minlengthpass.validate(User_password) except: minlength_error = "Пароль слишком короткий, он должен содержать минимум 8 символов" return render(request, 'cooking/auth.html', {'minlength_error': minlength_error}) try: commonpass.validate(User_password) except: common_error = "Пароль слишком простой" return render(request, 'cooking/auth.html', {'common_error': common_error}) hasher = PBKDF2PasswordHasher() salt = get_random_string( 12, "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") User_password = hasher.encode(password=User_password, salt=salt, iterations=180000) if UserInfo.objects.filter(user_name=User_name).exists(): user_error = "Пользователь с таким именем уже существует" return render(request, 'cooking/auth.html', {'user_error': user_error}) else: secret = get_random_string( 50, 'qwertyuiopasdfghjlkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%^&*()_-' ) Userinfo = UserInfo(user_name=User_name, user_img=" ", user_email=User_email, user_password=User_password, user_soup_list=" ", user_secret=secret) Userinfo.save() response = HttpResponseRedirect('/cooking/') if request.COOKIES.get('livetime'): time = int(request.COOKIES.get('livetime')) response.set_cookie('wasauthorised', secret, time) else: response.set_cookie('wasauthorised', secret, 1209600) return response except: return HttpResponseRedirect('/cooking/register/')
def validacao_senha_registro(request): senha = loads(request.body)['valor'] resposta = {} tamanho_minimo = MinimumLengthValidator(8) numerica = NumericPasswordValidator() comum = CommonPasswordValidator() # Checando se a senha tem no mínimo 8 caracteres try: tamanho_minimo.validate(senha) except ValidationError: tamanho_minimo = False # Checando se a senha é totalmente numérica try: numerica.validate(senha) except ValidationError: numerica = False # Checando se a senha é comum try: comum.validate(senha) except ValidationError: comum = False if not tamanho_minimo: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Sua senha deve conter pelo menos 8 caracteres' elif not numerica: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Sua senha não pode ser inteiramente numérica' elif not comum: status = 400 resposta['status'] = 'inválido' resposta['erro'] = 'Essa senha é muito comum. Tente outra.' else: status = 200 resposta['status'] = 'válido' return JsonResponse(resposta, status=status)