changeset 8303:2cb54d157d62

user: make get_by_username_or_email default to treat username case insensitive The get_by_username_or_email is a flexible function, intended to find users in multiple ways, suitable for login prompts. The function was sometimes used with case sensitive user lookup, sometimes without. Instead, be consistent and just default to be insensitive.
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 23 Mar 2020 14:32:06 +0100
parents 5b147d0f8927
children 9e4f0baa18e7
files kallithea/controllers/login.py kallithea/lib/auth_modules/__init__.py kallithea/model/db.py
diffstat 3 files changed, 2 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/login.py	Thu Mar 26 17:48:16 2020 +0100
+++ b/kallithea/controllers/login.py	Mon Mar 23 14:32:06 2020 +0100
@@ -82,7 +82,7 @@
                 c.form_result = login_form.to_python(dict(request.POST))
                 # form checks for username/password, now we're authenticated
                 username = c.form_result['username']
-                user = User.get_by_username_or_email(username, case_insensitive=True)
+                user = User.get_by_username_or_email(username)
                 assert user is not None  # the same user get just passed in the form validation
             except formencode.Invalid as errors:
                 defaults = errors.value
--- a/kallithea/lib/auth_modules/__init__.py	Thu Mar 26 17:48:16 2020 +0100
+++ b/kallithea/lib/auth_modules/__init__.py	Mon Mar 23 14:32:06 2020 +0100
@@ -136,9 +136,6 @@
                   username)
         if username:
             user = User.get_by_username_or_email(username)
-            if user is None:
-                log.debug('Fallback to fetch user in case insensitive mode')
-                user = User.get_by_username(username, case_insensitive=True)
         else:
             log.debug('provided username:`%s` is empty skipping...', username)
         return user
--- a/kallithea/model/db.py	Thu Mar 26 17:48:16 2020 +0100
+++ b/kallithea/model/db.py	Mon Mar 23 14:32:06 2020 +0100
@@ -549,7 +549,7 @@
         return user
 
     @classmethod
-    def get_by_username_or_email(cls, username_or_email, case_insensitive=False, cache=False):
+    def get_by_username_or_email(cls, username_or_email, case_insensitive=True, cache=False):
         """
         For anything that looks like an email address, look up by the email address (matching
         case insensitively).