Example #1
0
 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;
 }
 private function addValidator()
 {
     Validator::extend('validdomain', function ($attribute, $value, $parameters) {
         $ok = preg_match('/^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}(\\.(xn--)?([a-z0-9]{1,61}|[a-z0-9-]{1,30}\\.[a-z]{2,}))*$/', $value);
         if (strpos($value, '.') === false) {
             return false;
         }
         return $ok;
     });
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * @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')]));
     }
 }
Example #5
0
 /**
  * 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']);
 }