summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/util/Constants.ts18
-rw-r--r--src/util/passwordStrength.ts22
2 files changed, 27 insertions, 13 deletions
diff --git a/src/util/Constants.ts b/src/util/Constants.ts

index 84012071..ec508236 100644 --- a/src/util/Constants.ts +++ b/src/util/Constants.ts
@@ -72,10 +72,11 @@ export interface DefaultOptions { allowNewRegistration: boolean; allowMultipleAccounts: boolean; password: { - pwMinLength: number; - pwMinNumbers: number; - pwMinUpperCase: number; - pwMinSymbols: number; + minLength: number; + minNumbers: number; + minUpperCase: number; + minSymbols: number; + blockInsecureCommonPasswords: boolean; // TODO: efficiently save password blocklist in database }; }; } @@ -141,10 +142,11 @@ export const DefaultOptions: DefaultOptions = { allowNewRegistration: true, allowMultipleAccounts: true, password: { - pwMinLength: 8, - pwMinNumbers: 2, - pwMinUpperCase: 2, - pwMinSymbols: 0, + minLength: 8, + minNumbers: 2, + minUpperCase: 2, + minSymbols: 0, + blockInsecureCommonPasswords: false, }, }, }; diff --git a/src/util/passwordStrength.ts b/src/util/passwordStrength.ts
index 88155d82..f6cec9da 100644 --- a/src/util/passwordStrength.ts +++ b/src/util/passwordStrength.ts
@@ -5,6 +5,7 @@ const reNUMBER = /[0-9]/g; const reUPPERCASELETTER = /[A-Z]/g; const reSYMBOLS = /[A-Z,a-z,0-9]/g; +const blocklist: string[] = []; // TODO: update ones passwordblocklist is stored in db /* * https://en.wikipedia.org/wiki/Password_policy * password must meet following criteria, to be perfect: @@ -16,26 +17,32 @@ const reSYMBOLS = /[A-Z,a-z,0-9]/g; * Returns: 0 > pw > 1 */ export function check(password: string): number { - const { pwMinLength, pwMinNumbers, pwMinUpperCase, pwMinSymbols } = Config.get().register.password; + const { + minLength, + minNumbers, + minUpperCase, + minSymbols, + blockInsecureCommonPasswords, + } = Config.get().register.password; var strength = 0; // checks for total password len - if (password.length >= pwMinLength - 1) { + if (password.length >= minLength - 1) { strength += 0.25; } // checks for amount of Numbers - if (password.count(reNUMBER) >= pwMinNumbers - 1) { + if (password.count(reNUMBER) >= minNumbers - 1) { strength += 0.25; } // checks for amount of Uppercase Letters - if (password.count(reUPPERCASELETTER) >= pwMinUpperCase - 1) { + if (password.count(reUPPERCASELETTER) >= minUpperCase - 1) { strength += 0.25; } // checks for amount of symbols - if (password.replace(reSYMBOLS, "").length >= pwMinSymbols - 1) { + if (password.replace(reSYMBOLS, "").length >= minSymbols - 1) { strength += 0.25; } @@ -44,5 +51,10 @@ export function check(password: string): number { strength = 0; } + if (blockInsecureCommonPasswords) { + if (blocklist.includes(password)) { + strength = 0; + } + } return strength; }