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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)