From c436f965d3de9267845d8f5c875c6beede1bf656 Mon Sep 17 00:00:00 2001 From: shridhar Date: Wed, 13 Sep 2017 14:18:31 +0530 Subject: [PATCH 1/5] Login with username https://github.com/frappe/frappe/issues/4106 --- frappe/auth.py | 5 ++- .../system_settings/system_settings.json | 37 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/frappe/auth.py b/frappe/auth.py index b92e7e604d..2e197eb94a 100644 --- a/frappe/auth.py +++ b/frappe/auth.py @@ -199,6 +199,9 @@ class LoginManager: if cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_mobile_number")): user = frappe.db.get_value("User", filters={"mobile_no": user}, fieldname="name") or user + if cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_user_name")): + user = frappe.db.get_value("User", filters={"username": user}, fieldname="name") or user + self.check_if_enabled(user) self.user = self.check_password(user, pwd) @@ -331,4 +334,4 @@ def get_website_user_home_page(user): home_page = frappe.get_attr(home_page_method[-1])(user) return '/' + home_page.strip('/') else: - return '/me' \ No newline at end of file + return '/me' diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json index 42f873509a..85d5c19304 100644 --- a/frappe/core/doctype/system_settings/system_settings.json +++ b/frappe/core/doctype/system_settings/system_settings.json @@ -868,6 +868,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "default": "0", "description": "User can login using Email id or Mobile number", "fieldname": "allow_login_using_mobile_number", "fieldtype": "Check", @@ -893,6 +894,38 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "0", + "description": "User can login using Email id or User Name", + "fieldname": "allow_login_using_user_name", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Allow Login using User Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -1216,8 +1249,8 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2017-08-31 14:53:31.065925", - "modified_by": "ewfds@wfe.ef", + "modified": "2017-09-13 13:26:11.045262", + "modified_by": "shri@zerodha.com", "module": "Core", "name": "System Settings", "name_case": "", From 4d954d5569b17dd5a1ef978ff33b29e928953075 Mon Sep 17 00:00:00 2001 From: shridhar Date: Thu, 14 Sep 2017 11:09:19 +0530 Subject: [PATCH 2/5] Change placeholder to 'Email address or Username' in login screen Change placeholder in login screen based on system setting If allowed login using mobile number placeholder => 'Email address or Mobile number' If allowed login using username placeholder => 'Email address or Username' If allowed login using both username and mobile placeholder => 'Email Address or Mobile number or Username' --- frappe/www/login.html | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/frappe/www/login.html b/frappe/www/login.html index 003b234bb6..88650dfa99 100644 --- a/frappe/www/login.html +++ b/frappe/www/login.html @@ -17,9 +17,16 @@ From fb48bca8dd82eb3a94a2e11e7986e7cfb75c0a13 Mon Sep 17 00:00:00 2001 From: shridhar Date: Thu, 14 Sep 2017 12:15:58 +0530 Subject: [PATCH 3/5] Change place holder based on system settings add place holder in login.py and then use in template --- frappe/www/login.html | 12 +----------- frappe/www/login.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/frappe/www/login.html b/frappe/www/login.html index 88650dfa99..8cfbfea25b 100644 --- a/frappe/www/login.html +++ b/frappe/www/login.html @@ -16,17 +16,7 @@ diff --git a/frappe/www/login.py b/frappe/www/login.py index 5002a44b35..99c80b92a5 100644 --- a/frappe/www/login.py +++ b/frappe/www/login.py @@ -31,6 +31,16 @@ def get_context(context): ldap_settings = get_ldap_settings() context["ldap_settings"] = ldap_settings + login_name_placeholder = "Email address" + + if frappe.utils.cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_mobile_number")): + login_name_placeholder += " or Mobile number" + + if frappe.utils.cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_user_name")): + login_name_placeholder += " or Username" + + context['login_name_placeholder'] = login_name_placeholder + return context @frappe.whitelist(allow_guest=True) From ed431b03c22370685f880051980e1e6b78b7955f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 14 Sep 2017 12:31:54 +0530 Subject: [PATCH 4/5] Update login.py --- frappe/www/login.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/frappe/www/login.py b/frappe/www/login.py index 99c80b92a5..78c7022234 100644 --- a/frappe/www/login.py +++ b/frappe/www/login.py @@ -31,15 +31,16 @@ def get_context(context): ldap_settings = get_ldap_settings() context["ldap_settings"] = ldap_settings - login_name_placeholder = "Email address" + + login_name_placeholder = [_("Email address")] - if frappe.utils.cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_mobile_number")): - login_name_placeholder += " or Mobile number" + if frappe.utils.cint(frappe.get_system_settings("allow_login_using_mobile_number")): + login_name_placeholder.append(_("Mobile number")) - if frappe.utils.cint(frappe.db.get_value("System Settings", "System Settings", "allow_login_using_user_name")): - login_name_placeholder += " or Username" + if frappe.utils.cint(frappe.get_system_settings("allow_login_using_user_name")): + login_name_placeholder.append(_("Username")) - context['login_name_placeholder'] = login_name_placeholder + context['login_name_placeholder'] = ' {0} '.format(_('or')).join(login_name_placeholder) return context From 44e6027549d5e81118716d8ebc6139b68c28d8d1 Mon Sep 17 00:00:00 2001 From: shridhar Date: Thu, 14 Sep 2017 12:44:13 +0530 Subject: [PATCH 5/5] Removed trailing whitespaces from login.py --- frappe/www/login.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frappe/www/login.py b/frappe/www/login.py index 78c7022234..8c83ec783b 100644 --- a/frappe/www/login.py +++ b/frappe/www/login.py @@ -31,7 +31,6 @@ def get_context(context): ldap_settings = get_ldap_settings() context["ldap_settings"] = ldap_settings - login_name_placeholder = [_("Email address")] if frappe.utils.cint(frappe.get_system_settings("allow_login_using_mobile_number")):