mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
This reverts commit fbe5a9c71096dde8d7d59a0b2bec932b22c38a05. I missed one area outside of core where this mixin is being used.
This commit is contained in:
@ -0,0 +1,121 @@
|
||||
import EmberObject, { computed } from "@ember/object";
|
||||
import Mixin from "@ember/object/mixin";
|
||||
import { isEmpty } from "@ember/utils";
|
||||
import { i18n } from "discourse-i18n";
|
||||
|
||||
export default Mixin.create({
|
||||
rejectedPasswords: null,
|
||||
|
||||
init() {
|
||||
this._super(...arguments);
|
||||
this.set("rejectedPasswords", []);
|
||||
this.set("rejectedPasswordsMessages", new Map());
|
||||
},
|
||||
|
||||
passwordInstructions: computed("passwordMinLength", function () {
|
||||
return i18n("user.password.instructions", {
|
||||
count: this.passwordMinLength,
|
||||
});
|
||||
}),
|
||||
|
||||
passwordMinLength: computed("isDeveloper", "admin", function () {
|
||||
const { isDeveloper, admin } = this;
|
||||
return isDeveloper || admin
|
||||
? this.siteSettings.min_admin_password_length
|
||||
: this.siteSettings.min_password_length;
|
||||
}),
|
||||
|
||||
passwordValidation: computed(
|
||||
"accountPassword",
|
||||
"passwordRequired",
|
||||
"rejectedPasswords.[]",
|
||||
"accountUsername",
|
||||
"accountName",
|
||||
"accountEmail",
|
||||
"passwordMinLength",
|
||||
"forceValidationReason",
|
||||
function () {
|
||||
const failedAttrs = {
|
||||
failed: true,
|
||||
ok: false,
|
||||
element: document.querySelector("#new-account-password"),
|
||||
};
|
||||
|
||||
if (!this.passwordRequired) {
|
||||
return EmberObject.create({ ok: true });
|
||||
}
|
||||
|
||||
if (this.rejectedPasswords.includes(this.accountPassword)) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
reason:
|
||||
this.rejectedPasswordsMessages.get(this.accountPassword) ||
|
||||
i18n("user.password.common"),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// If blank, fail without a reason
|
||||
if (isEmpty(this.accountPassword)) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
message: i18n("user.password.required"),
|
||||
reason: this.forceValidationReason
|
||||
? i18n("user.password.required")
|
||||
: null,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// If too short
|
||||
if (this.accountPassword.length < this.passwordMinLength) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
reason: i18n("user.password.too_short", {
|
||||
count: this.passwordMinLength,
|
||||
}),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!isEmpty(this.accountUsername) &&
|
||||
this.accountPassword === this.accountUsername
|
||||
) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
reason: i18n("user.password.same_as_username"),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!isEmpty(this.accountName) &&
|
||||
this.accountPassword === this.accountName
|
||||
) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
reason: i18n("user.password.same_as_name"),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!isEmpty(this.accountEmail) &&
|
||||
this.accountPassword === this.accountEmail
|
||||
) {
|
||||
return EmberObject.create(
|
||||
Object.assign(failedAttrs, {
|
||||
reason: i18n("user.password.same_as_email"),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// Looks good!
|
||||
return EmberObject.create({
|
||||
ok: true,
|
||||
reason: i18n("user.password.ok"),
|
||||
});
|
||||
}
|
||||
),
|
||||
});
|
Reference in New Issue
Block a user