Пример #1
0
def create_campaign():
    try:
        token = request.headers["token"]
        user = db.get_user_by_token(token)

        data = request.get_json(silent=True)  # name & chclass

        name = data["name"]
        characters = data["characters"]

        for c in characters:
            if db.get_character_by_id(c) == None:
                return jsonify({"error": "Character is not correct"}), 400

        campaign = db.add(Campaign(user.id, name))
        if not campaign:
            abort(500)

        for c in characters:
            db.add(CampaignCharacter(c, campaign.id))

        return jsonify({"campaign_id": campaign.id})

    except Exception as e:
        print("[DEBUG] Error in 'create_campaign' : " + str(e))
        logger.error("Error in 'create_campaign' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #2
0
def login():
    try:
        data = request.get_json(silent=True)  # username, password
        user = db.get_user_by_username(data["username"])
        if user == None:
            logger.warning("Login errorea, '" + data["username"] +
                           "' erabiltzailea ez da esistitzen. " +
                           str(request.remote_addr))
            return jsonify({"error": "Erabiltzaile izena ez da zuzena"}), 400
        elif not check_password_hash(user.password, data["password"]):
            logger.warning("Login errorea, '" + data["username"] +
                           "' erabiltzaileak ez du pasahitz egokia erabili. " +
                           str(request.remote_addr))
            return jsonify({"error": "Pasahitza ez da zuzena"}), 400
        else:
            token = token_generator()
            db.delete_session_by_user(user.id)
            if not db.add(Session(user.id, token)):
                abort(500)

            # TODO:
            #if user.change_password: # Pasahitza aldatu behar da
            #    return jsonify({"token" : token, "chpassword" : "true"}), 200

            return jsonify({"token": token}), 200

    except Exception as e:
        logger.error("Errorea 'login' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #3
0
def add_device():
    try:
        token = request.headers["token"]  # TODO: Wrapper bat?
        user = db.get_user_by_token(token)
        if user == None:
            return jsonify({"error": "Gakoa ez da zuzena"}), 200

        data = request.get_json(silent=True)  # device auth
        device = db.get_device_by_code(data["code"])

        if device == None:
            return jsonify({"error": "Kodea ez da baliozkoa"}), 400
        if db.device_has_owner(device.id):
            return jsonify({"error": "Kodea ez da baliozkoa"}), 400

        if db.add(Permission(user.id, device.id, Permission.OWNER)) == False:
            return jsonify({"error": "Errorea datubasean"}), 500

        logger.info("Device bati jabea jarri zaio. Auth:" + device.auth +
                    " UserId:" + str(user.id) + " addr:" +
                    str(request.remote_addr))

        return jsonify({"success": "true"}), 200
    except Exception as e:
        logger.error("Errorea 'add_device' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #4
0
def login():
    try:
        data = request.get_json(silent=True)  # username, password
        user = db.get_user_by_username(data["username"])
        if user == None:
            logger.warning("Login error, '" + data["username"] +
                           "' user doesn't exist. " + str(request.remote_addr))
            return jsonify({"error": "User doesn't exist"}), 400
        elif not check_password_hash(user.password, data["password"]):
            logger.warning("Login error, '" + data["username"] +
                           "' password is not correct " +
                           str(request.remote_addr))
            return jsonify({"error": "Incorrect password"}), 400
        else:
            token = token_generator()
            db.delete_session_by_user(user.id)
            if not db.add(Session(user.id, token)):
                abort(500)

            return jsonify({"token": token}), 200

    except Exception as e:
        print("[DEBUG] Error " + str(e))
        logger.error("Error in 'login' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #5
0
def create_repository():
    try:
        data = request.get_json(silent=True)
        user = db.get_user_by_token(request.headers["token"])
        if user == None:
            return jsonify({"error": "The token is not correct"}), 200

        if db.get_repositories_by_user_and_name(user.id,
                                                data["repoName"]) != None:
            return jsonify({"error":
                            "You have a repo with the same name"}), 200

        db.add(
            Repository(user.id, data["repoName"], data["repoDesc"],
                       data["private"]))
        if GIT:
            git.create_repository(user.username, data["repoName"],
                                  data["private"])
        return jsonify({"success": "true"}), 200
    except:
        abort(500)
Пример #6
0
def add_collaborator():
    try:
        data = request.get_json(silent=True)
        token = request.headers["token"]
        owner = db.get_user_by_username(data["owner"])
        user = db.get_user_by_username(data["user"])

        if owner == None:
            return jsonify({"error": "The owner is not correct"}), 200

        if user == None:
            return jsonify({"error": "The user does not exist"}), 200

        if user.id == owner.id:
            return jsonify({
                "error":
                "You can't give permissions to the owner of the repository"
            }), 200

        current_user = db.get_user_by_token(token)
        if current_user.id != owner.id:
            return jsonify(
                {"error": "You are not the owner of this repository"}), 200

        repo = db.get_repositories_by_user_and_name(owner.id, data["repo"])
        if repo == None:
            return jsonify({"error": "The repository doesn't exist"}), 200

        write = bool(data["level"] == "write")
        db.add(Collaboration(user.id, repo.id, write))
        if GIT:
            git.add_user_to_repository(owner.username, repo.name,
                                       user.username, data["level"])

        return jsonify({"success": "true", "message": "User added"})
    except:
        abort(500)
Пример #7
0
def sign_up():
    try:
        data = request.get_json(silent=True)
        if db.get_user_by_username(data["username"]) != None:
            return jsonify({"error": "This user is not available"}), 400
        else:
            saltedPsw = generate_password_hash(data["password"])
            if db.add(User(data["username"], saltedPsw)):
                logger.info("New account created:  " + data["username"] +
                            " : " + str(request.remote_addr))
                return jsonify({}), 200
            else:
                abort(500)
    except Exception as e:
        print("[DEBUG] Error " + str(e))
        logger.error("Error in 'sign_up' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #8
0
def device_new():
    try:
        data = request.get_json(silent=True)  # device auth
        if db.get_device_by_auth(data["auth"]) != None:
            return jsonify({"error": "auth not valid"}), 400

        device = db.add(Device(data["auth"], Device.generate_code()))

        if device == False:
            return jsonify({"error": "db error"}), 500

        logger.info("Device berri bat sortu da. Auth:" + device.auth +
                    " Code:" + device.code + " addr:" +
                    str(request.remote_addr))

        return jsonify({"success": "true", "code": device.code}), 200
    except Exception as e:
        logger.error("Errorea 'device_new' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)
Пример #9
0
def sign_up():
    try:
        data = request.get_json(silent=True)
        if db.get_user_by_email(data["email"]) != None:
            return jsonify({"error": "Email already used"}), 200
        elif db.get_user_by_username(data["username"]) != None:
            return jsonify({"error": "Username already used"}), 200
        else:
            saltedPsw = generate_password_hash(data["password"])
            if db.add(User(data["username"], saltedPsw, data["email"])):
                if GIT:
                    git.create_user(data["username"], data["password"])
                return jsonify({
                    "success": "true",
                    "message": "User created"
                }), 200
            else:
                return jsonify({"error":
                                "There was a error in the server"}), 200
    except:
        abort(500)
Пример #10
0
def sign_in():
    try:
        data = request.get_json(silent=True)
        user = db.get_user_by_email(data["email"])
        if user == None:
            return jsonify({"error": "Email doesn't exist"}), 200
        elif not check_password_hash(user.password, data["password"]):
            return jsonify({"error": "Password is not correct"}), 200
        else:
            token = token_generator()
            db.delete_session_by_user(user.id)
            if not db.add(Session(user.id, token)):
                abort(500)
            return jsonify({
                "success": "true",
                "token": token,
                "email": user.email,
                "username": user.username
            }), 200
    except:
        abort(500)
Пример #11
0
def create_character():
    try:
        token = request.headers["token"]
        user = db.get_user_by_token(token)

        data = request.get_json(silent=True)  # name & chclass
        ch_class = db.get_character_class_by_name(data["character_class"])
        name = data["name"]

        if ch_class == None:
            return jsonify({"error": "Character class is not correct"}), 400

        character = db.add(Character(name, ch_class.id, user.id))
        if not character:
            abort(500)

        return jsonify({"character_id": character.id})

    except Exception as e:
        print("[DEBUG] Error in 'create_character' : " + str(e))
        logger.error("Error in 'create_character' : " + str(e) + " " +
                     str(request.remote_addr))
        abort(500)