コード例 #1
2
ファイル: WFormModel.C プロジェクト: ScienziatoBestia/wt
bool WFormModel::validateField(Field field)
{
  if (!isVisible(field))
    return true;

  FieldMap::iterator i = fields_.find(field);

  if (i != fields_.end()) {
    FieldData& d = i->second;

    if (d.validator)
      setValidation(field, d.validator->validate(asString(valueText(field))));
    else
      setValidation(field, Valid);

    return d.validation.state() == WValidator::Valid;
  } else
    return true;
}
コード例 #2
0
ファイル: AuthModel.C プロジェクト: kdeforche/wt
bool AuthModel::validateField(Field field)
{
  if (field == RememberMeField)
    return true;

  User user = users().findWithIdentity(Identity::LoginName,
				       valueText(LoginNameField));
  if (field == LoginNameField) {
    if (user.isValid())
      setValid(LoginNameField);
    else {
      setValidation
	(LoginNameField,
	 WValidator::Result(ValidationState::Invalid,
			    WString::tr("Wt.Auth.user-name-invalid")));

      throttlingDelay_ = 0;
    }

    return user.isValid();
  } else if (field == PasswordField) {
    if (user.isValid()) {
      PasswordResult r
	= passwordAuth()->verifyPassword(user, valueText(PasswordField));

      switch (r) {
      case PasswordResult::PasswordInvalid:
	setValidation
	  (PasswordField,
	   WValidator::Result(ValidationState::Invalid,
			      WString::tr("Wt.Auth.password-invalid")));

	if (passwordAuth()->attemptThrottlingEnabled())
	  throttlingDelay_ = passwordAuth()->delayForNextAttempt(user);

	return false;
      case PasswordResult::LoginThrottling:
	setValidation
	  (PasswordField,
	   WValidator::Result(ValidationState::Invalid,
			      WString::tr("Wt.Auth.password-info")));
	setValidated(PasswordField, false);

	throttlingDelay_ = passwordAuth()->delayForNextAttempt(user);
	LOG_SECURE("throttling: " << throttlingDelay_
		   << " seconds for " << user.identity(Identity::LoginName));

	return false;
      case PasswordResult::PasswordValid:
	setValid(PasswordField);
	return true;
      }

      /* unreachable */
      return false;
    } else
      return false;
  } else
    return false;
}
コード例 #3
0
ファイル: FormBaseModel.C プロジェクト: Brasil/wt
bool FormBaseModel::loginUser(Login& login, User& user, LoginState state)
{
  if (!user.isValid())
    return false;

  if (user.status() == User::Disabled) {
    setValidation
      (LoginNameField,
       WValidator::Result(WValidator::Invalid,
			  WString::tr("Wt.Auth.account-disabled")));

    login.login(user, DisabledLogin);

    return false;
  } else if (baseAuth()->emailVerificationRequired() &&
	     user.email().empty()) {
    setValidation
      (LoginNameField,
       WValidator::Result(WValidator::Invalid,
			  WString::tr("Wt.Auth.email-unverified")));

    login.login(user, DisabledLogin);

    return false;
  } else {
    login.login(user, state);

    return true;
  }  
}
コード例 #4
0
ファイル: FormBaseModel.C プロジェクト: Brasil/wt
void FormBaseModel::setValid(Field field, const Wt::WString& message)
{
  setValidation(field,
		WValidator::Result(WValidator::Valid,
				   message.empty() ? 
				   WString::tr("Wt.Auth.valid") : message));
}
コード例 #5
0
ファイル: authModel.cpp プロジェクト: yvanvds/yATools
bool authModel::validateField(Field field) {
  if(field == RememberMeField) return true;
  
  y::ldap::account & account = ldapServer.getAccount(UID(valueText(LoginNameField)));
  
  if(field == LoginNameField) {
    if(!account.isNew()) {
      setValid(LoginNameField);
      return true;
    } else {
      setValidation(LoginNameField,
         Wt::WValidator::Result(Wt::WValidator::Invalid,
            Wt::WString::tr("Wt.Auth.user-name-invalid")));
      return false;
    }
  }
  
  if(field == PasswordField) {
    if(account.isNew()) return false;
    if(ldapServer.auth(account.dn(), PASSWORD(valueText(PasswordField)))) {
      setValid(PasswordField);
      
      Wt::Auth::User user = users().findWithIdentity(Wt::Auth::Identity::LoginName, account.uid().get().db());
      if(!user.isValid()) {
        Wt::Auth::User user = users().registerNew();
        user.addIdentity(Wt::Auth::Identity::LoginName, account.uid().get().db());
      }
      return true;
    } else {
      setValidation(PasswordField,
        Wt::WValidator::Result(Wt::WValidator::Invalid,
          Wt::WString::tr("Wt.Auth.password-invalid")));
      return false;
    }
  }
  return true;
}
コード例 #6
0
ファイル: AuthModel.C プロジェクト: hhirsch/wtim
void AuthModel::reset()
{
  if (baseAuth()->identityPolicy() == EmailAddressIdentity)
    addField(LoginNameField, WString::tr("Wt.Auth.email-info"));
  else
    addField(LoginNameField, WString::tr("Wt.Auth.user-name-info"));

  addField(PasswordField, WString::tr("Wt.Auth.password-info"));

  int days = baseAuth()->authTokenValidity() / 24 / 60;

  WString info;
  if (days % 7 != 0)
    info = WString::tr("Wt.Auth.remember-me-info.days").arg(days);
  else
    info = WString::tr("Wt.Auth.remember-me-info.weeks").arg(days/7);

  addField(RememberMeField, info);
  setValidation(RememberMeField, WValidator::Result(WValidator::Valid, info));
}
コード例 #7
0
ファイル: FormBaseModel.C プロジェクト: Spencerx/wt
void FormBaseModel::setValid(Field field)
{
  setValidation(field,
		WValidator::Result(WValidator::Valid,
				   WString::tr("Wt.Auth.valid")));
}