diff --git a/src/main/scala/util/LDAPUtil.scala b/src/main/scala/util/LDAPUtil.scala index 05a7171..cf6ffe7 100644 --- a/src/main/scala/util/LDAPUtil.scala +++ b/src/main/scala/util/LDAPUtil.scala @@ -49,7 +49,7 @@ ){ conn => findMailAddress(conn, userDN, ldapSettings.mailAttribute) match { case Some(mailAddress) => Right(LDAPUserInfo( - userName = userName, + userName = getUserNameFromMailAddress(userName), fullName = ldapSettings.fullNameAttribute.flatMap { fullNameAttribute => findFullName(conn, userDN, fullNameAttribute) }.getOrElse(userName), @@ -59,6 +59,13 @@ } } + private def getUserNameFromMailAddress(userName: String): String = { + (userName.indexOf('@') match { + case i if i < 0 => userName.substring(0, i) + case i => userName + }).replaceAll("[^a-zA-Z0-9\\-_.]", "").replaceAll("^[_\\-]", "") + } + private def bind[A](host: String, port: Int, dn: String, password: String, tls: Boolean, keystore: String, error: String) (f: LDAPConnection => Either[String, A]): Either[String, A] = { if (tls) {