diff --git a/server.py b/server.py index 56c1b48..79b99ef 100755 --- a/server.py +++ b/server.py @@ -10,6 +10,7 @@ from sqlalchemy import Column, Integer, String, Boolean, or_, and_ from sqlalchemy.orm import sessionmaker from sqlalchemy.exc import IntegrityError from sqlalchemy.sql import func +import sqlalchemy from flask_sqlalchemy import SQLAlchemy @@ -91,11 +92,17 @@ def createUser(webform): if username in FORBIDDEN_USERNAMES: return "Error: Username {} is forbidden because it is a special user.".format(username) - subprocess.run(["/usr/bin/sudo", "./scripts/create_user.sh", cryptPass, username]) - # track added users to prevent deletion of other users and listing # - db.session.add(FTPUser(username=webform['username'])) - db.session.commit() + try: + db.session.add(FTPUser(username=webform['username'])) + db.session.commit() + except sqlalchemy.exc.IntegrityError as e: + if "UNIQUE" in str(e): + return "Error: User with this name already exists" + else: + return str(e) + + subprocess.run(["/usr/bin/sudo", "./scripts/create_user.sh", cryptPass, username]) return None