"dependencies": {
"@typescript-eslint/parser": "^4.31.1",
"autosize": "^5.0.1",
+ "check-password-strength": "^2.0.3",
"choices.js": "^9.0.1",
"emoji-short-name": "^1.0.0",
"express": "~4.17.1",
+import { Options, passwordStrength } from "check-password-strength";
+import { I18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
import { T } from "inferno-i18next-dess";
import {
import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon";
+const passwordStrengthOptions: Options<string> = [
+ {
+ id: 0,
+ value: "too_weak",
+ minDiversity: 0,
+ minLength: 0,
+ },
+ {
+ id: 1,
+ value: "weak",
+ minDiversity: 2,
+ minLength: 10,
+ },
+ {
+ id: 2,
+ value: "medium",
+ minDiversity: 3,
+ minLength: 12,
+ },
+ {
+ id: 3,
+ value: "strong",
+ minDiversity: 4,
+ minLength: 14,
+ },
+];
+
interface State {
loginForm: LoginForm;
registerForm: Register;
value={this.state.registerForm.password}
autoComplete="new-password"
onInput={linkEvent(this, this.handleRegisterPasswordChange)}
+ minLength={10}
maxLength={60}
class="form-control"
required
/>
+ {this.state.registerForm.password && (
+ <div class={this.passwordColorClass}>
+ {i18n.t(this.passwordStrength as I18nKeys)}
+ </div>
+ )}
</div>
</div>
);
}
+ get passwordStrength() {
+ return passwordStrength(
+ this.state.registerForm.password,
+ passwordStrengthOptions
+ ).value;
+ }
+
+ get passwordColorClass(): string {
+ let strength = this.passwordStrength;
+
+ if (["weak", "medium"].includes(strength)) {
+ return "text-warning";
+ } else if (strength == "strong") {
+ return "text-success";
+ } else {
+ return "text-danger";
+ }
+ }
+
handleLoginSubmit(i: Login, event: any) {
event.preventDefault();
i.state.loginLoading = true;
i.setState(i.state);
}
- handleLogoutClick(_i: Settings) {
- UserService.Instance.logout();
- window.location.href = "/";
- location.reload();
- }
-
handleDeleteAccount(i: Settings, event: any) {
event.preventDefault();
i.state.deleteAccountLoading = true;
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+check-password-strength@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/check-password-strength/-/check-password-strength-2.0.3.tgz#fed038b1c457ac11a2999bd96f3185af34e88895"
+ integrity sha512-UW3YgMUne9QuejgnNWjWwYi4QhWArVj+1OXqDR1NkEQcmMKKO74O3P5ZvXr9JZNbTBfcwlK3yurYCMuJsck83A==
+
choices.js@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/choices.js/-/choices.js-9.0.1.tgz#745fb29af8670428fdc0bf1cc9dfaa404e9d0510"