import { Context } from "../context/Context"; import { IRule } from "./interface/IRule"; /* * use https://www.npmjs.com/package/validatorjs */ import { ERuleTypes } from "./enum/ERuleTypes"; import { ActionParams } from "../action/type/ActionParams"; import { BaseRule } from "./base/BaseRule"; import { ActiveProxyActionParams } from "../action/type/ActiveProxyActionParams"; import { CommonRules } from "./CommonRules"; import { ChangeRoleParams } from "../action/type/ChangeRoleParams"; import { RoleUserEnum } from "../context/enum/RoleUserEnum"; export class ChangeRoleRules extends BaseRule implements IRule { constructor(params: ActionParams){ super(params); } /*@overwrite*/ public validate(rules: Array, context: Context): boolean { let passes : any = []; rules.forEach(rule => { switch (rule) { case ERuleTypes.IS_VALID_ROLE: passes.push(this.isValidRole(this.params)); break; case ERuleTypes.IS_DISCONNECTED: passes.push(new CommonRules(this.params).isDisconnected(context, this)); break; } }); if(passes.every((pass : boolean) => pass == true)){ this.passes = true; return true; }else{ this.fails = true; return false; } } public isValidRole(params: ActionParams): boolean { let paramsObj: ChangeRoleParams = Object.assign(params); let data = { role_type: paramsObj.role, }; let rules = { role_type: 'string|in:'+RoleUserEnum.Audience+","+RoleUserEnum.Host }; let messages = { "number.role_type":'Invalid role type', "in.role_type":'Invalid role type' }; return this.evaluate(data, rules, messages); } }