diff --git a/web/pgadmin/static/js/helpers/ModalProvider.jsx b/web/pgadmin/static/js/helpers/ModalProvider.jsx index 850f537f6..b7b9ee867 100644 --- a/web/pgadmin/static/js/helpers/ModalProvider.jsx +++ b/web/pgadmin/static/js/helpers/ModalProvider.jsx @@ -131,8 +131,8 @@ export default function ModalProvider({ children }) { return ( {children} - {modals.map((modalOptions, i) => ( - + {modals.map((modalOptions) => ( + ))} ); diff --git a/web/pgadmin/tools/user_management/__init__.py b/web/pgadmin/tools/user_management/__init__.py index e07c27433..4a310e323 100644 --- a/web/pgadmin/tools/user_management/__init__.py +++ b/web/pgadmin/tools/user_management/__init__.py @@ -400,6 +400,12 @@ def save(): ) try: + # Delete Users + if 'deleted' in data: + for item in data['deleted']: + status, res = delete_user(item['id']) + if not status: + return internal_server_error(errormsg=res) # Create Users if 'added' in data: for item in data['added']: @@ -412,13 +418,6 @@ def save(): status, res = update_user(item['id'], item) if not status: return internal_server_error(errormsg=res) - - # Delete Users - if 'deleted' in data: - for item in data['deleted']: - status, res = delete_user(item['id']) - if not status: - return internal_server_error(errormsg=res) except Exception as e: return internal_server_error(errormsg=str(e)) diff --git a/web/pgadmin/tools/user_management/static/js/UserManagementDialog.jsx b/web/pgadmin/tools/user_management/static/js/UserManagementDialog.jsx index b07559eb4..51b2b5c3a 100644 --- a/web/pgadmin/tools/user_management/static/js/UserManagementDialog.jsx +++ b/web/pgadmin/tools/user_management/static/js/UserManagementDialog.jsx @@ -149,6 +149,20 @@ class UserManagementCollection extends BaseUISchema { setError('username', null); } + if (state.auth_source != authConstant['INTERNAL']) { + if (obj.isNew(state) && obj.top?._sessData?.userManagement) { + for (let i=0; i < obj.top._sessData.userManagement.length; i++) { + if (obj.top._sessData.userManagement[i]?.id && + obj.top._sessData.userManagement[i].username == state.username && + obj.top._sessData.userManagement[i].auth_source == state.auth_source) { + msg = gettext('User name \'%s\' already exists', state.username); + setError('username', msg); + return true; + } + } + } + } + if (state.auth_source == authConstant['INTERNAL']) { let email_filter = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; if (isEmptyString(state.email)) {