diff --git a/backend/data/sqlite-database.db b/backend/data/sqlite-database.db index e06b1f6..a45b3fa 100644 Binary files a/backend/data/sqlite-database.db and b/backend/data/sqlite-database.db differ diff --git a/backend/src/rest_api.py b/backend/src/rest_api.py index 593a22b..4806d0b 100644 --- a/backend/src/rest_api.py +++ b/backend/src/rest_api.py @@ -139,3 +139,18 @@ def register() -> flask.Response: return flask.Response("Mail taken") return flask.Response("Phone/ pin code wrong", 400) return flask.Response() + + +@app.post("/delete-member") +def delete_member() -> flask.Response: + try: + user_id = flask.session["user_id"] + except KeyError: + return flask.Response("Not logged in", 428) + try: + utils.UserHandler.delete_member(flask.request.form["mail"], user_id) + except AssertionError: + return flask.Response("User doesn't exist", 404) + except KeyError as e: + return flask.Response("mail doesn't exist", 422) + return flask.Response() diff --git a/backend/src/utils/user.py b/backend/src/utils/user.py index f1fecc4..cdca8a8 100644 --- a/backend/src/utils/user.py +++ b/backend/src/utils/user.py @@ -121,8 +121,7 @@ class UserHandler: """, (user_id, ) ).fetchall() - if not users: - raise KeyError(f"{user_id} does not exist!") + assert users, f"{user_id} does not exist!" user = users[0] return User( user[0], @@ -187,3 +186,13 @@ class UserHandler: password.encode("utf-8"), users[0][0] ) + + @classmethod + def delete_member(cls, mail: str, leader_id: int) -> None: + assert cls.get_user_by_id(leader_id).team_id == cls.get_user_by_mail(mail).team_id + cls.__cursor.execute( + f""" + DELETE FROM users WHERE mail=? + """, (mail, ) + ) + cls.__connection.commit()