This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/mixins/password-validation.js.es6
Jarek Radosz fe588cc7f8
DEV: Fix function prototype deprecations (#8681)
* DEV: Fix the function prototype observers deprecation

DEPRECATION: Function prototype extensions have been deprecated, please migrate from function(){}.observes('foo') to observer('foo', function() {}). [deprecation id: function-prototype-extensions.observes] See https://deprecations.emberjs.com/v3.x/#toc_function-prototype-extensions-observes for more details.

* DEV: Fix the function prototype event listeners deprecation

DEPRECATION: Function prototype extensions have been deprecated, please migrate from function(){}.on('foo') to on('foo', function() {}). [deprecation id: function-prototype-extensions.on] See https://deprecations.emberjs.com/v3.x/#toc_function-prototype-extensions-on for more details.

* DEV: Simplify `default as` imports

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2020-01-16 18:56:53 +01:00

92 lines
2.2 KiB
JavaScript

import { isEmpty } from "@ember/utils";
import discourseComputed from "discourse-common/utils/decorators";
import Mixin from "@ember/object/mixin";
import EmberObject from "@ember/object";
export default Mixin.create({
rejectedPasswords: null,
init() {
this._super(...arguments);
this.set("rejectedPasswords", []);
this.set("rejectedPasswordsMessages", new Map());
},
@discourseComputed("passwordMinLength")
passwordInstructions() {
return I18n.t("user.password.instructions", {
count: this.passwordMinLength
});
},
@discourseComputed("isDeveloper", "admin")
passwordMinLength(isDeveloper, admin) {
return isDeveloper || admin
? this.siteSettings.min_admin_password_length
: this.siteSettings.min_password_length;
},
@discourseComputed(
"accountPassword",
"passwordRequired",
"rejectedPasswords.[]",
"accountUsername",
"accountEmail",
"passwordMinLength"
)
passwordValidation(
password,
passwordRequired,
rejectedPasswords,
accountUsername,
accountEmail,
passwordMinLength
) {
if (!passwordRequired) {
return EmberObject.create({ ok: true });
}
if (rejectedPasswords.includes(password)) {
return EmberObject.create({
failed: true,
reason:
this.rejectedPasswordsMessages.get(password) ||
I18n.t("user.password.common")
});
}
// If blank, fail without a reason
if (isEmpty(password)) {
return EmberObject.create({ failed: true });
}
// If too short
if (password.length < passwordMinLength) {
return EmberObject.create({
failed: true,
reason: I18n.t("user.password.too_short")
});
}
if (!isEmpty(accountUsername) && password === accountUsername) {
return EmberObject.create({
failed: true,
reason: I18n.t("user.password.same_as_username")
});
}
if (!isEmpty(accountEmail) && password === accountEmail) {
return EmberObject.create({
failed: true,
reason: I18n.t("user.password.same_as_email")
});
}
// Looks good!
return EmberObject.create({
ok: true,
reason: I18n.t("user.password.ok")
});
}
});