From 18269245e7cb18c69f9743b49a6aad79ffa58b68 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 9 Sep 2019 12:13:57 +0200 Subject: [adduser] Check if adding user succeeded Fixes #3573 --- modules-available/adduser/lang/de/messages.json | 1 + modules-available/adduser/lang/en/messages.json | 1 + modules-available/adduser/page.inc.php | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'modules-available') diff --git a/modules-available/adduser/lang/de/messages.json b/modules-available/adduser/lang/de/messages.json index ee633393..389ee3b6 100644 --- a/modules-available/adduser/lang/de/messages.json +++ b/modules-available/adduser/lang/de/messages.json @@ -5,6 +5,7 @@ "password-changed": "Passwort ge\u00e4ndert", "password-mismatch": "Passwort und Passwortbest\u00e4tigung stimmen nicht \u00fcberein", "roles-updated": "Rollen aktualisiert", + "user-already-exists": "Login {{0}} existiert bereits", "user-deleted": "Benutzer {{0}} (ID={{1}}) gel\u00f6scht", "user-edited": "Benutzerdaten wurden ge\u00e4ndert", "user-not-found": "Benutzer mit ID {{0}} nicht gefunden" diff --git a/modules-available/adduser/lang/en/messages.json b/modules-available/adduser/lang/en/messages.json index 67bca6f9..deaae19d 100644 --- a/modules-available/adduser/lang/en/messages.json +++ b/modules-available/adduser/lang/en/messages.json @@ -5,6 +5,7 @@ "password-changed": "Password changed", "password-mismatch": "Password and password confirmation do not match", "roles-updated": "Roles have been updated", + "user-already-exists": "Login {{0}} already exists", "user-deleted": "Deleted user {{0}} (ID={{1}})", "user-edited": "User data has been updated", "user-not-found": "User with ID {{0}} not found" diff --git a/modules-available/adduser/page.inc.php b/modules-available/adduser/page.inc.php index cffe33f9..c8acb554 100644 --- a/modules-available/adduser/page.inc.php +++ b/modules-available/adduser/page.inc.php @@ -47,7 +47,12 @@ class Page_AddUser extends Page 'phone' => $phone, 'email' => $email, ); - Database::exec('INSERT INTO user SET login = :login, passwd = :pass, fullname = :fullname, phone = :phone, email = :email', $data); + $ret = Database::exec('INSERT INTO user + SET login = :login, passwd = :pass, fullname = :fullname, phone = :phone, email = :email', $data, true); + if ($ret === false) { + Message::addError('user-already-exists', $login); + return; + } $id = Database::lastInsertId(); // Make it superadmin if first user. This method sucks as it's a race condition but hey... $ret = Database::queryFirst('SELECT Count(*) AS num FROM user'); -- cgit v1.2.3-55-g7522