From a498ef898675c00c05d673eea4be717f1b9e9595 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 5 Jul 2022 19:49:51 -0400 Subject: [PATCH] Check if username exists --- app/classes/controllers/users_controller.py | 4 ++++ app/classes/models/users.py | 8 ++++++++ app/classes/web/panel_handler.py | 7 +++++++ app/frontend/templates/panel/panel_edit_user.html | 8 ++++---- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/classes/controllers/users_controller.py b/app/classes/controllers/users_controller.py index bc5656a9..c3c90b2f 100644 --- a/app/classes/controllers/users_controller.py +++ b/app/classes/controllers/users_controller.py @@ -100,6 +100,10 @@ class UsersController: def get_all_user_ids() -> t.List[int]: return HelperUsers.get_all_user_ids() + @staticmethod + def get_all_usernames(): + return HelperUsers.get_all_usernames() + @staticmethod def get_id_by_name(username): return HelperUsers.get_user_id_by_name(username) diff --git a/app/classes/models/users.py b/app/classes/models/users.py index ca27caac..3b19e906 100644 --- a/app/classes/models/users.py +++ b/app/classes/models/users.py @@ -99,6 +99,14 @@ class HelperUsers: query = Users.select().where(Users.username != "system") return query + @staticmethod + def get_all_usernames(): + usernames = [] + query = Users.select().where(Users.username != "system") + for user in query: + usernames.append(user.username) + return usernames + @staticmethod def get_all_user_ids() -> t.List[int]: return [ diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 5122a683..df01f60d 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -1860,6 +1860,13 @@ class PanelHandler(BaseHandler): ) user_id = bleach.clean(self.get_argument("id", None)) username = bleach.clean(self.get_argument("username", None).lower()) + if ( + username != self.controller.users.get_user_by_id(user_id)["username"] + and username in self.controller.users.get_all_usernames() + ): + self.redirect( + "/panel/error?error=Duplicate User: Useranme already exists." + ) password0 = bleach.clean(self.get_argument("password0", None)) password1 = bleach.clean(self.get_argument("password1", None)) email = bleach.clean(self.get_argument("email", "default@example.com")) diff --git a/app/frontend/templates/panel/panel_edit_user.html b/app/frontend/templates/panel/panel_edit_user.html index 34015202..08392d70 100644 --- a/app/frontend/templates/panel/panel_edit_user.html +++ b/app/frontend/templates/panel/panel_edit_user.html @@ -76,28 +76,28 @@ }} - {{ translate('userConfig', 'userNameDesc', data['lang']) }} + data-lpignore="true" value="{{ data['user']['username'] }}" placeholder="User Name">
+ autocomplete="new-password" data-lpignore="true" placeholder="Password">
+ autocomplete="new-password" data-lpignore="true" placeholder="Repeat Password">
+ data-lpignore="true" value="{{ data['user']['email'] }}" placeholder="Gravatar Email">