0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Refactor Password validator into mixin

no issue
- PasswordValidator was only adding a function to the base class but it introduced a confusing inheritance hierarchy that's easier to reason about when it's a mixin instead
- swapped the `this.properties =` and `this._super()` calls in the `init` function of `new-user` so that the default can actually be applied
  - previously the BaseValidator `init` method was doing `this.properties = []` which meant the default fallback in extended classes wouldn't work
This commit is contained in:
Kevin Ansfield 2018-09-17 15:52:07 +01:00
parent 71bbfa2dbd
commit ee36284440
4 changed files with 24 additions and 11 deletions

View file

@ -1,4 +1,4 @@
import BaseValidator from './base';
import Mixin from '@ember/object/mixin';
import validator from 'npm:validator';
const BAD_PASSWORDS = [
@ -13,7 +13,7 @@ const BAD_PASSWORDS = [
];
const DISALLOWED_PASSWORDS = ['ghost', 'password', 'passw0rd'];
export default BaseValidator.extend({
export default Mixin.create({
/**
* Counts repeated characters if a string. When 50% or more characters are the same,
* we return false and therefore invalidate the string.

View file

@ -1,11 +1,12 @@
import PasswordValidator from 'ghost-admin/validators/password';
import BaseValidator from './base';
import PasswordValidatorMixin from './mixins/password';
import validator from 'npm:validator';
import {isBlank} from '@ember/utils';
export default PasswordValidator.extend({
export default BaseValidator.extend(PasswordValidatorMixin, {
init() {
this._super(...arguments);
this.properties = this.properties || ['name', 'email', 'password'];
this._super(...arguments);
},
name(model) {

View file

@ -1,9 +1,13 @@
import PasswordValidator from 'ghost-admin/validators/password';
import BaseValidator from './base';
import PasswordValidatorMixin from './mixins/password';
import validator from 'npm:validator';
import {isBlank} from '@ember/utils';
export default PasswordValidator.create({
properties: ['newPassword'],
const resetValidator = BaseValidator.extend(PasswordValidatorMixin, {
init() {
this.properties = this.properties || ['newPassword'];
this._super(...arguments);
},
newPassword(model) {
let p1 = model.get('newPassword');
@ -20,3 +24,5 @@ export default PasswordValidator.create({
this.passwordValidation(model, p1, 'newPassword');
}
});
export default resetValidator.create();

View file

@ -1,9 +1,13 @@
import PasswordValidator from 'ghost-admin/validators/password';
import BaseValidator from './base';
import PasswordValidatorMixin from './mixins/password';
import validator from 'npm:validator';
import {isBlank} from '@ember/utils';
export default PasswordValidator.create({
properties: ['name', 'bio', 'email', 'location', 'website', 'roles'],
const userValidator = BaseValidator.extend(PasswordValidatorMixin, {
init() {
this.properties = this.properties || ['name', 'bio', 'email', 'location', 'website', 'roles'];
this._super(...arguments);
},
isActive(model) {
return (model.get('status') === 'active');
@ -121,3 +125,5 @@ export default PasswordValidator.create({
}
}
});
export default userValidator.create();