Merge branch 'hotfix'
This commit is contained in:
commit
8c1b31655a
6 changed files with 21 additions and 9 deletions
|
|
@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
|
|||
from .exceptions import *
|
||||
from .utils.jinja import get_jenv, get_template, render_template
|
||||
|
||||
__version__ = '8.0.64'
|
||||
__version__ = '8.0.65'
|
||||
__title__ = "Frappe Framework"
|
||||
|
||||
local = Local()
|
||||
|
|
|
|||
|
|
@ -49,7 +49,9 @@ class User(Document):
|
|||
self.__new_password = self.new_password
|
||||
self.new_password = ""
|
||||
|
||||
self.password_strength_test()
|
||||
if not frappe.flags.in_test:
|
||||
self.password_strength_test()
|
||||
|
||||
if self.name not in STANDARD_USERS:
|
||||
self.validate_email_type(self.email)
|
||||
self.validate_email_type(self.name)
|
||||
|
|
@ -409,7 +411,8 @@ class User(Document):
|
|||
self.username = ""
|
||||
|
||||
def password_strength_test(self):
|
||||
if self.__new_password:
|
||||
""" test password strength """
|
||||
if frappe.db.get_single_value("System Settings", "enable_password_policy") and self.__new_password:
|
||||
user_data = (self.first_name, self.middle_name, self.last_name, self.email, self.birth_date)
|
||||
result = test_password_strength(self.__new_password, '', None, user_data)
|
||||
|
||||
|
|
@ -869,4 +872,4 @@ def handle_password_test_fail(result):
|
|||
suggestions = result['feedback']['suggestions'][0] if result['feedback']['suggestions'] else ''
|
||||
warning = result['feedback']['warning'] if 'warning' in result['feedback'] else ''
|
||||
suggestions += "<br>" + _("Hint: Include symbols, numbers and capital letters in the password") + '<br>'
|
||||
frappe.throw(_('Invalid Password: ' + ' '.join([warning, suggestions])))
|
||||
frappe.throw(_('Invalid Password: ' + ' '.join([warning, suggestions])))
|
||||
|
|
|
|||
|
|
@ -709,6 +709,7 @@ class Document(BaseDocument):
|
|||
# value change is not applicable in insert
|
||||
event_map['validate'] = 'Value Change'
|
||||
event_map['before_change'] = 'Value Change'
|
||||
event_map['before_update_after_submit'] = 'Value Change'
|
||||
|
||||
for alert in self.flags.email_alerts:
|
||||
event = event_map.get(method, None)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ frappe.ui.form.MultiSelectDialog = Class.extend({
|
|||
let fields = [
|
||||
{
|
||||
fieldtype: "Data",
|
||||
label: __("Search term"),
|
||||
label: __("Search Term"),
|
||||
fieldname: "search_term"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -661,7 +661,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|||
);
|
||||
self.element_groups.arrow.add(arrow.element);
|
||||
return arrow; // eslint-disable-line
|
||||
});
|
||||
}).filter(function (arr) {
|
||||
return arr;
|
||||
}); // filter falsy values
|
||||
self._arrows = self._arrows.concat(arrows);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@
|
|||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
from frappe import _
|
||||
|
||||
import zxcvbn
|
||||
import frappe
|
||||
from frappe import _
|
||||
|
||||
def test_password_strength(password, user_inputs=None):
|
||||
'''Wrapper around zxcvbn.password_strength'''
|
||||
|
|
@ -35,12 +37,14 @@ def get_feedback (score, sequence):
|
|||
"""
|
||||
Returns the feedback dictionary consisting of ("warning","suggestions") for the given sequences.
|
||||
"""
|
||||
minimum_password_score = frappe.db.get_single_value("System Settings", "minimum_password_score")
|
||||
|
||||
global default_feedback
|
||||
# Starting feedback
|
||||
if len(sequence) == 0:
|
||||
return default_feedback
|
||||
# No feedback if score is good or great
|
||||
if score > 2:
|
||||
if score >= minimum_password_score:
|
||||
return dict({"warning": "","suggestions": []})
|
||||
# Tie feedback to the longest match for longer sequences
|
||||
longest_match = max(sequence, key=lambda x: len(x['token']))
|
||||
|
|
@ -132,7 +136,9 @@ def get_match_feedback(match, is_sole_match):
|
|||
"date": fun_date,
|
||||
"year": fun_date
|
||||
}
|
||||
return(patterns[match['pattern']]())
|
||||
pattern_fn = patterns.get(match['pattern'])
|
||||
if pattern_fn:
|
||||
return(pattern_fn())
|
||||
|
||||
def get_dictionary_match_feedback(match, is_sole_match):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue