diff --git a/src/octoprint/server/api/__init__.py b/src/octoprint/server/api/__init__.py index 82d5d0f4..47215573 100644 --- a/src/octoprint/server/api/__init__.py +++ b/src/octoprint/server/api/__init__.py @@ -109,7 +109,7 @@ def firstRunSetup(): "pass2" in request.values.keys() and request.values["pass1"] == request.values["pass2"]: # configure access control s().setBoolean(["accessControl", "enabled"], True) - octoprint.server.userManager.addUser(request.values["user"], request.values["pass1"], True, ["user", "admin"]) + octoprint.server.userManager.addUser(request.values["user"], request.values["pass1"], True, ["user", "admin"], overwrite=True) s().setBoolean(["server", "firstRun"], False) elif "ac" in request.values.keys() and not request.values["ac"] in valid_boolean_trues: # disable access control diff --git a/src/octoprint/users.py b/src/octoprint/users.py index 1aaf2071..0a1ae128 100644 --- a/src/octoprint/users.py +++ b/src/octoprint/users.py @@ -106,7 +106,7 @@ class UserManager(object): # old hash doesn't match either, wrong password return False - def addUser(self, username, password, active, roles): + def addUser(self, username, password, active, roles, overwrite=False): pass def changeUserActivation(self, username, active): @@ -214,11 +214,11 @@ class FilebasedUserManager(UserManager): self._dirty = False self._load() - def addUser(self, username, password, active=False, roles=None, apikey=None): + def addUser(self, username, password, active=False, roles=None, apikey=None, overwrite=False): if not roles: roles = ["user"] - if username in self._users.keys(): + if username in self._users.keys() and not overwrite: raise UserAlreadyExists(username) self._users[username] = User(username, UserManager.createPasswordHash(password), active, roles, apikey=apikey)