mirror of
https://github.com/versia-pub/frontend.git
synced 2025-12-06 08:28:20 +01:00
23 lines
732 B
TypeScript
23 lines
732 B
TypeScript
|
|
/**
|
||
|
|
* Get the strength of a password
|
||
|
|
* @param password The password to check
|
||
|
|
* @returns Number from 0 to Infinity representing the strength of the password
|
||
|
|
*/
|
||
|
|
export const passwordStrength = (password: string): number => {
|
||
|
|
const length = password.length;
|
||
|
|
const specialChars = password.match(/[^A-Za-z0-9]/g)?.length || 0;
|
||
|
|
const numbers = password.match(/[0-9]/g)?.length || 0;
|
||
|
|
const upperCase = password.match(/[A-Z]/g)?.length || 0;
|
||
|
|
const lowerCase = password.match(/[a-z]/g)?.length || 0;
|
||
|
|
|
||
|
|
// Calculate the strength of the password
|
||
|
|
return (
|
||
|
|
(length * 4 +
|
||
|
|
specialChars * 6 +
|
||
|
|
numbers * 4 +
|
||
|
|
upperCase * 2 +
|
||
|
|
lowerCase * 2) /
|
||
|
|
16
|
||
|
|
);
|
||
|
|
};
|