#3928 Zxcvbn service to compute password complexity
This commit is contained in:
parent
3703a71ea3
commit
0b0ef8a318
3 changed files with 26 additions and 6 deletions
23
app/services/zxcvbn_service.rb
Normal file
23
app/services/zxcvbn_service.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
class ZxcvbnService
|
||||
def initialize(password)
|
||||
@password = password
|
||||
end
|
||||
|
||||
def complexity
|
||||
wxcvbn = compute_zxcvbn
|
||||
score = wxcvbn.score
|
||||
length = @password.blank? ? 0 : @password.length
|
||||
vulnerabilities = wxcvbn.match_sequence.map { |m| m.matched_word.nil? ? m.token : m.matched_word }.select { |s| s.length > 2 }.join(', ')
|
||||
[score, vulnerabilities, length]
|
||||
end
|
||||
|
||||
def score
|
||||
compute_zxcvbn.score
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def compute_zxcvbn
|
||||
Zxcvbn.test(@password, [], ZXCVBN_DICTIONNARIES)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue