/**
  * @Route("register")
  * @POST
  */
 public function register(UserBindingModel $model)
 {
     try {
         $isOkCSRF = $this->checkCSRF();
         if (!$isOkCSRF) {
             throw new \Exception("Invalid Request!");
         }
         $errorMsgs = '';
         if ($model->getUsername() == null) {
             $errorMsgs = "Missing username. ";
         }
         $username = $model->getUsername();
         if ($model->getPassword() == null) {
             $errorMsgs .= "Missing password. ";
         }
         $password = $model->getPassword();
         if ($model->getConfirm() == null) {
             $errorMsgs .= "Missing confirm password. ";
         }
         $confirm = $model->getConfirm();
         if ($password !== $confirm) {
             $errorMsgs .= "Password and Confirm password are different. ";
         }
         $dbUserModel = $this->dbContext->getIdentityUsersRepository()->filterByUsername($username)->findOne();
         if ($dbUserModel == null) {
             if (strlen($password) >= 4) {
                 $userClassName = UserConfig::UserIdentityClassName;
                 $userModel = new $userClassName($username, password_hash($password, PASSWORD_DEFAULT));
             } else {
                 $errorMsgs .= "The password should be at least 4 characters. ";
             }
         } else {
             $errorMsgs .= "User with this username already exist! ";
         }
         if ($errorMsgs != '') {
             throw new \Exception($errorMsgs);
         }
         $this->dbContext->getIdentityUsersRepository()->add($userModel);
         $this->dbContext->getIdentityUsersRepository()->save();
         $userId = $this->dbContext->getIdentityUsersRepository()->filterByUsername($username)->findOne()->getId();
         $roleId = 1;
         Database::addRoleToUser($userId, $roleId);
         $this->initLogin($username, $password);
     } catch (\Exception $e) {
         $message = $e->getMessage();
         $this->httpContext->getSession()->error = $message;
         return new View($model);
     }
     return new View();
 }