added user status and prediction user
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
import Joi from 'joi';
 | 
			
		||||
import IdValidate from './id';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default class ModelValidate {  // validate input for model
 | 
			
		||||
@@ -29,9 +30,10 @@ export default class ModelValidate {  // validate input for model
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static output (data) {  // validate output and strip unwanted properties, returns null if not valid
 | 
			
		||||
    data = IdValidate.stringify(data);
 | 
			
		||||
    const {value, error} = Joi.object({
 | 
			
		||||
      group: this.model.group,
 | 
			
		||||
      models: Joi.array().items(this.model.model)
 | 
			
		||||
      models: Joi.array().items(this.model.model.append({_id: IdValidate.get()}))
 | 
			
		||||
    }).validate(data, {stripUnknown: true});
 | 
			
		||||
    return error !== undefined? null : value;
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,13 @@ export default class UserValidate {  // validate input for user
 | 
			
		||||
      .items(Joi.string()
 | 
			
		||||
        .allow('')
 | 
			
		||||
        .max(128)
 | 
			
		||||
      )
 | 
			
		||||
      ),
 | 
			
		||||
 | 
			
		||||
    models: Joi.array()
 | 
			
		||||
      .items(IdValidate.get()),
 | 
			
		||||
 | 
			
		||||
    status: Joi.string()
 | 
			
		||||
      .valid(...Object.values(globals.status))
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  private static specialUsernames: string[] = ['admin', 'user', 'key', 'new', 'passreset'];  // names a user cannot take
 | 
			
		||||
@@ -44,7 +50,8 @@ export default class UserValidate {  // validate input for user
 | 
			
		||||
        pass: this.user.pass.required(),
 | 
			
		||||
        level: this.user.level.required(),
 | 
			
		||||
        location: this.user.location.required(),
 | 
			
		||||
        devices: this.user.devices.required()
 | 
			
		||||
        devices: this.user.devices.required(),
 | 
			
		||||
        models: this.user.models.required()
 | 
			
		||||
      }).validate(data);
 | 
			
		||||
    }
 | 
			
		||||
    else if (param === 'change') {
 | 
			
		||||
@@ -63,7 +70,8 @@ export default class UserValidate {  // validate input for user
 | 
			
		||||
        pass: this.user.pass,
 | 
			
		||||
        level: this.user.level,
 | 
			
		||||
        location: this.user.location,
 | 
			
		||||
        devices: this.user.devices
 | 
			
		||||
        devices: this.user.devices,
 | 
			
		||||
        models: this.user.models
 | 
			
		||||
      }).validate(data);
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
@@ -71,16 +79,21 @@ export default class UserValidate {  // validate input for user
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static output (data) {  // validate output and strip unwanted properties, returns null if not valid
 | 
			
		||||
  static output (data, param = '') {  // validate output and strip unwanted properties, returns null if not valid
 | 
			
		||||
    data = IdValidate.stringify(data);
 | 
			
		||||
    const {value, error} = Joi.object({
 | 
			
		||||
    const validate: {[key: string]: object} = {
 | 
			
		||||
      _id: IdValidate.get(),
 | 
			
		||||
      name: this.user.name,
 | 
			
		||||
      email: this.user.email,
 | 
			
		||||
      level: this.user.level,
 | 
			
		||||
      location: this.user.location,
 | 
			
		||||
      devices: this.user.devices
 | 
			
		||||
    }).validate(data, {stripUnknown: true});
 | 
			
		||||
      devices: this.user.devices,
 | 
			
		||||
      models: this.user.models
 | 
			
		||||
    }
 | 
			
		||||
    if (param === 'admin') {
 | 
			
		||||
      validate.status = this.user.status;
 | 
			
		||||
    }
 | 
			
		||||
    const {value, error} = Joi.object(validate).validate(data, {stripUnknown: true});
 | 
			
		||||
    return error !== undefined? null : value;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user