Ejemplo n.º 1
0
def reset_with_token(token):
    """
    PUT view tht updates password in our db
    :param token:
    :return: updated password for user
    """
    email = confirm_token(token)

    if not email:
        return json.dumps({'message': 'Link has been expired'}), 400

    data = request.get_json()
    schema = UserSchema.reg_pass
    password = data['password']

    if not re.match(schema, password):
        return json.dumps({'message': 'Password in invalid'}), 400

    password = generate_password_hash(data['password'])

    if password:
        user = User.query.filter(User.email == email).first()
        if user:
            user.password = password
            db.session.add(user)  # pylint: disable=E1101
            db.session.commit()  # pylint: disable=E1101
            return json.dumps({'token': token}), 200

    return json.dumps({'message': 'user doesnt exist'}), 404
Ejemplo n.º 2
0
def confirm_email(token):
    """
    View that updates status of our user
     to confirmed via email
    :param token:
    :return: eather change status in bd to True
    or incorrect responses
    """
    email = confirm_token(token)

    if not email:
        return json.dumps({'message': 'Link has been expired'}), 400
    user = User.query.filter(User.email == email).first()

    if user:
        if user.confirmed:
            flash('Account already confirmed. Please login.', 'success')
        else:
            user.confirmed = True
            user.confirmed_date = datetime.utcnow()
            db.session.add(user)  # pylint: disable=E1101
            db.session.commit()  # pylint: disable=E1101
            flash('You have confirmed your account. Thanks!', 'success')
        return json.dumps({'token': token}), 200

    return json.dumps({'status': 404, 'message': 'user doesnt exist'}), 404
Ejemplo n.º 3
0
def confirm_email(token):
    """
    View that updates status of our user
     to confirmed via email
    :param token:
    :return: eather change status in bd to True
    or incorrect responses
    """
    email = confirm_token(token)

    if not email:
        return jsonify({
            'message': 'Link expired'
        }), Status.HTTP_400_BAD_REQUEST

    user = DataBaseManager.get_user_by_email(email)

    user.confirmed = True
    user.confirmed_date = DateTimeManager.get_current_time()
    DB.session.add(user)
    DB.session.commit()

    return jsonify({
        'token': token
        }), Status.HTTP_200_OK
Ejemplo n.º 4
0
def get_temp_file(token):
    """
    Generate token and decode it for email returning
    :param token:
    :return: temp link for downloads file to the email
    """
    file_path = confirm_token(token)

    return send_file(file_path, as_attachment=True)
Ejemplo n.º 5
0
def password_reset(token):
    """
    PUT view that updates password in our DB
    :param token:
    :return: updated password for user
    """
    if request.method == "GET":
        if not REDIS.get(token):
            return jsonify({
                'message': 'Token is invalid'
            }), Status.HTTP_400_BAD_REQUEST
        return Status.HTTP_200_OK

    if not REDIS.get(token):
        return jsonify({
            'message': 'Token is invalid'
            }), Status.HTTP_400_BAD_REQUEST

    email = confirm_token(token)

    if not email:
        return jsonify({
            'message': 'Link has been expired'
        }), Status.HTTP_400_BAD_REQUEST

    data = request.get_json()
    schema = UserSchema.reg_pass
    password = data['password']

    if not re.match(schema, password):
        return jsonify({
            'message': 'Password is invalid'
            }), Status.HTTP_400_BAD_REQUEST

    password = generate_password_hash(data['password'])

    user = DataBaseManager.get_user_by_email(email)
    user.password = password
    DB.session.add(user)
    DB.session.commit()
    REDIS.delete(token)
    return jsonify({
        'token': token
    }), Status.HTTP_200_OK