diff --git a/backend/data/sqlite-database.db b/backend/data/sqlite-database.db index 927ee53..42aca8a 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 af631cb..546c49d 100644 --- a/backend/src/rest_api.py +++ b/backend/src/rest_api.py @@ -61,7 +61,8 @@ def register_leader() -> flask.Response: user_id = utils.UserHandler.get_user_by_mail(mail).user_id flask.session.pop("mail") flask.session["user_id"] = user_id - except (TypeError, KeyError): + except (TypeError, KeyError) as e: + print(e) return flask.Response("Something is missing", 422) except sqlite3.IntegrityError: return flask.Response("Mail already registered or phone number or pin code is not correct", 428) @@ -125,6 +126,8 @@ def register() -> flask.Response: )) except TypeError: return flask.Response("Not all details provided", 422) + except AssertionError: + return flask.Response("Max 4 members", 400) except sqlite3.IntegrityError as error: error_message = str(error) if error_message == "UNIQUE constraint failed: users.phone_number": diff --git a/backend/src/utils/team.py b/backend/src/utils/team.py index d344b4b..d592da3 100644 --- a/backend/src/utils/team.py +++ b/backend/src/utils/team.py @@ -34,3 +34,14 @@ class TeamHandler: ) cls.__connection.commit() return team.lastrowid if team.lastrowid else -1 + + @classmethod + def get_team_members(cls, team_id: int) -> list[int]: + users = cls.__cursor.execute( + f""" + SELECT user_id + FROM users WHERE team_id = ?; + """, + (team_id, ) + ).fetchall() + return users diff --git a/backend/src/utils/user.py b/backend/src/utils/user.py index 85abe89..70f1f89 100644 --- a/backend/src/utils/user.py +++ b/backend/src/utils/user.py @@ -1,6 +1,7 @@ import bcrypt from dataclasses import dataclass import sqlite3 +import utils @dataclass @@ -66,6 +67,7 @@ class UserHandler: cls, user: User ) -> None: + assert len(utils.TeamHandler.get_team_members(user.team_id)) <= 4 salt = bcrypt.gensalt() encrypted_password = bcrypt.hashpw(user.password.encode("utf-8"), salt) cls.__cursor.execute(