Details
-
Bug
-
Resolution: Obsolete
-
Low
-
2.7.11
-
None
Description
If a user logs in with a username containing upper case characters, but the external auth system is case independent, they may get an error like:
com.cenqua.fisheye.rep.DbException: User named "djdch" already exists.
at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251)
at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245)
at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96)
at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245)
at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634)
at com.cenqua.fisheye.user.DefaultUserManager.getOrImportUser(DefaultUserManager.java:614)
at com.cenqua.fisheye.user.DefaultUserManager.loginWithSanitizedUserName(DefaultUserManager.java:432)
at com.cenqua.fisheye.user.DefaultUserManager.login(DefaultUserManager.java:407)
at sun.reflect.GeneratedMethodAccessor412.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at $Proxy40.login(Unknown Source)
at com.cenqua.fisheye.web.LoginServlet.login(LoginServlet.java:108)
when they login.
This is because the initial check to see if the user exists uses the mixed case name, and FeCru is case sensitive, but the name used to create the user is that returned by the external auth, which is mapped to lower case.
We should always use the name provided by the user to create the local user, not the name returned by the external auth system, or should always map user names to lower case when external auth is used (which would probably not be backward compatible).