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:
parent
71bbfa2dbd
commit
ee36284440
4 changed files with 24 additions and 11 deletions
|
@ -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.
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue