public function check($id, $values, $appId, $showMeta = false) { $table = $this->tablesRepository->read($id); $validator = \Validator::make($values, $this->createValidationRules($table)); if ($validator->fails()) { throw new ValidationException($validator); } $fields = $table->fields(); $variant = $table->getVariantForCheck(isset($values['variant_id']) ? $values['variant_id'] : null); $scoring_data = ['table' => ['_id' => new ObjectID($table->getId()), 'title' => $table->title, 'description' => $table->description, 'matching_type' => $table->matching_type, 'variant' => ['_id' => new ObjectID($variant->getId()), 'title' => $variant->title, 'description' => $variant->description]], 'application' => $appId, 'applications' => $table->getApplications(), 'title' => $variant->default_title, 'description' => $variant->default_description, 'default_decision' => $variant->default_decision, 'fields' => $fields->toArray(), 'rules' => [], 'request' => $values]; $final_decision = null; $fieldsCollection = $fields->get(); /** @var \App\Models\Rule $rule */ foreach ($variant->rules()->get() as $rule) { $scoring_rule = ['_id' => new ObjectID($rule->_id), 'than' => $rule->than, 'title' => $rule->title, 'description' => $rule->description, 'conditions' => []]; $conditions_matched = true; foreach ($rule->conditions as $condition) { $fieldKey = $condition->field_key; /** @var Field $field */ $field = $fieldsCollection->filter(function ($item) use($fieldKey) { return $item->key == $fieldKey; })->first(); if (!$field) { # skip, because field may not be exists continue; } $this->checkCondition($condition, $this->prepareFieldPreset($field, $values[$condition->field_key])); if (!$condition->matched) { $conditions_matched = false; } $condition = $condition->getAttributes(); $scoring_rule['conditions'][] = $condition; } if ($table->matching_type == 'scoring') { if ($conditions_matched) { $final_decision += floatval($rule->than); } } else { if (!$final_decision and $conditions_matched) { $final_decision = $rule->than; $scoring_data['title'] = $rule->title; $scoring_data['description'] = $rule->description; } } $scoring_rule['decision'] = $conditions_matched ? $rule->than : null; $scoring_data['rules'][] = $scoring_rule; } $scoring_data['final_decision'] = $final_decision ?: $variant->default_decision; $decision = (new Decision())->fill($scoring_data)->save(); \Event::fire(new Make($decision)); $response = $decision->toConsumerArray(); if (!$showMeta) { unset($response['rules']); } return $response; }
/** * To validate data coming with request * @param array $data * @param array $validationRules * @return object $validatorObject */ public function validateInputData($data, $validationRules) { $validationErrorMessages = array('sometimes' => "", 'required' => 'parameter_missing', 'numeric' => 'invalid_parameter_type', 'min' => 'parameter_missing', 'regex' => 'invalid_parameter_type'); foreach ($validationRules as $keyToValidate => $rulesToApply) { $applyRules = ''; foreach ($rulesToApply as $value) { if (empty($applyRules)) { $applyRules = $value; } else { $applyRules .= '|' . $value; } if (strpos($value, ':') !== false) { $keyArray = explode(':', $value); $messages[$keyToValidate . '.' . $keyArray[0]] = $validationErrorMessages[$keyArray[0]]; } else { $messages[$keyToValidate . '.' . $value] = $validationErrorMessages[$value]; } } $rules[$keyToValidate] = $applyRules; } $validatorObject = \Validator::make($data, $rules, $messages); return $validatorObject; }
/** * @return boolean * * @throws ValidationException * @throws NotFoundHttpException * @throws TokenNotValidException * @throws \UnexpectedValueException */ public function resetPassword() { $validator = \Validator::make($this->request->all(), ['token' => 'required', 'email' => 'required|email|max:255', 'password' => 'required|confirmed|min:' . \Config::get('auth.password.min_length')]); if ($validator->fails()) { throw new ValidationException($validator); } $credentials = $this->request->only('email', 'password', 'password_confirmation', 'token'); $attemptReset = $this->passwords->reset($credentials, function ($user, $password) { /** * @var \App\Models\User $user */ $user->password = \Hash::make($password); $user->save() && \Event::fire(new ResetPassword($user)); }); switch ($attemptReset) { case PasswordBroker::PASSWORD_RESET: return true; case PasswordBroker::INVALID_USER: throw new UserNotFoundException(); case PasswordBroker::INVALID_TOKEN: throw new TokenNotValidException(); default: throw new \UnexpectedValueException(trans($attemptReset, ['min_length' => \Config::get('auth.password.min_length')])); } }
/** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ public function validator(array $data) { return \Validator::make($data, ['email' => 'required|email', 'password' => 'required', 'phone' => 'required|min:10', 'fio' => 'required', 'region' => 'required', 'profession' => 'required']); }
private function validateDomain($domain) { $this->addValidator(); $v = Validator::make(array('domain' => $domain), array('domain' => 'required:validdomain')); }