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; }
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; }
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; } }
void FormBaseModel::setValid(Field field, const Wt::WString& message) { setValidation(field, WValidator::Result(WValidator::Valid, message.empty() ? WString::tr("Wt.Auth.valid") : message)); }
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; }
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)); }
void FormBaseModel::setValid(Field field) { setValidation(field, WValidator::Result(WValidator::Valid, WString::tr("Wt.Auth.valid"))); }