From 2311a644ab694ea9cff54d8da7f887799fb25934 Mon Sep 17 00:00:00 2001 From: Jeroen Peelaerts Date: Fri, 30 Jul 2021 21:07:15 +0200 Subject: [PATCH] Fix employee username duplication check (#3239) --- application/controllers/Employees.php | 6 ++++++ application/language/en-GB/employees_lang.php | 1 + application/language/en-US/employees_lang.php | 1 + application/models/Employee.php | 2 +- application/views/employees/form.php | 8 +++++--- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/application/controllers/Employees.php b/application/controllers/Employees.php index 957167f26..9a5dbdf4e 100644 --- a/application/controllers/Employees.php +++ b/application/controllers/Employees.php @@ -190,5 +190,11 @@ class Employees extends Persons echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_cannot_be_deleted'))); } } + + public function check_username() + { + $exists = $this->Employee->username_exists($this->input->get('username')); + echo !$exists ? 'true' : 'false'; + } } ?> diff --git a/application/language/en-GB/employees_lang.php b/application/language/en-GB/employees_lang.php index 8beed6c3f..22b3929c8 100644 --- a/application/language/en-GB/employees_lang.php +++ b/application/language/en-GB/employees_lang.php @@ -8,6 +8,7 @@ $lang["employees_confirm_restore"] = "Are you sure you want to restore the selec $lang["employees_current_password"] = "Current Password"; $lang["employees_current_password_invalid"] = "Current Password is invalid"; $lang["employees_employee"] = "Employee"; +$lang["employees_employee_username_duplicate"] = "Employee username is already in use. Please choose another one."; $lang["employees_error_adding_updating"] = "Employee add or update failed"; $lang["employees_error_deleting_demo_admin"] = "You cannot delete the demo admin user"; $lang["employees_error_updating_demo_admin"] = "You cannot change the demo admin user"; diff --git a/application/language/en-US/employees_lang.php b/application/language/en-US/employees_lang.php index 1485a9677..1453ebb9a 100644 --- a/application/language/en-US/employees_lang.php +++ b/application/language/en-US/employees_lang.php @@ -8,6 +8,7 @@ $lang["employees_confirm_restore"] = "Are you sure you want to restore selected $lang["employees_current_password"] = "Current Password"; $lang["employees_current_password_invalid"] = "Current Password is invalid."; $lang["employees_employee"] = "Employee"; +$lang["employees_employee_username_duplicate"] = "Employee username is already in use. Please choose another one."; $lang["employees_error_adding_updating"] = "Employee add or update failed."; $lang["employees_error_deleting_demo_admin"] = "You can not delete the demo admin user."; $lang["employees_error_updating_demo_admin"] = "You can not change the demo admin user."; diff --git a/application/models/Employee.php b/application/models/Employee.php index a07023c0b..9731d27c2 100644 --- a/application/models/Employee.php +++ b/application/models/Employee.php @@ -105,7 +105,7 @@ class Employee extends Person //Run these queries as a transaction, we want to make sure we do all or nothing $this->db->trans_start(); - if(ENVIRONMENT != 'testing' && !$this->username_exists($employee_data['username']) && parent::save($person_data, $employee_id)) + if(ENVIRONMENT != 'testing' && parent::save($person_data, $employee_id)) { if(!$employee_id || !$this->exists($employee_id)) { diff --git a/application/views/employees/form.php b/application/views/employees/form.php index 9b7f05b7b..76f65fa63 100644 --- a/application/views/employees/form.php +++ b/application/views/employees/form.php @@ -210,7 +210,8 @@ $(document).ready(function() username: { required: true, - minlength: 5 + minlength: 5, + remote: "" }, password: { @@ -238,8 +239,9 @@ $(document).ready(function() username: { required: "lang->line('employees_username_required'); ?>", - minlength: "lang->line('employees_username_minlength'); ?>" - }, + minlength: "lang->line('employees_username_minlength'); ?>", + username: "lang->line('employees_employee_username_duplicate'); ?>" + }, password: {