Skip duplicate username check when username unchanged
authorJeff Godin <jgodin@tadl.org>
Wed, 30 Oct 2013 17:20:28 +0000 (13:20 -0400)
committerBen Shum <bshum@biblio.org>
Thu, 6 Feb 2014 06:02:09 +0000 (01:02 -0500)
Changing a username, then changing back to the user's current
username results in a duplicate username detection -- a false
positive due to the API call finding a user with that username --
the current user. This prevents you from saving any other changes
you may have made to the user.

This can be prevented by skipping the duplicate username check if
the user is not new and the username in the field matches the
username stored in the in-memory Javascript representation of the
user.

There's still a potential corner case which could be avoided by
using a new/modified API call to either accept an "except this
au.id" argument or to return the au.id of the found user, but I
don't see a need for that at this point.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/web/js/ui/default/actor/user/register.js

index daccc51..629b18c 100644 (file)
@@ -1380,7 +1380,9 @@ function attachWidgetEvents(fmcls, fmfield, widget) {
                         var input = findWidget('au', 'usrname');
                         var usrname = input.widget.attr('value');
 
-                        if(!usrname) {
+                        // Skip username check if the value is not yet present, or if this
+                        // is a patron which already existed and the usrname value is unchanged
+                        if(!usrname || (!patron.isnew() && usrname == patron.usrname())) {
                             dupeUsrname = false;
                             dojo.addClass(dojo.byId('uedit-dupe-username-warning'), 'hidden');
                             return;