예제 #1
0
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)
예제 #2
0
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/')
예제 #3
0
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)