void WTemplateFormView::updateView(WFormModel *model) { std::vector<WFormModel::Field> fields = model->fields(); for (unsigned i = 0; i < fields.size(); ++i) { WFormModel::Field field = fields[i]; updateViewField(model, field); } }
bool UpdatePasswordWidget::validate() { bool valid = true; if (authModel_) { updateModelField(authModel_, AuthModel::PasswordField); if (!authModel_->validate()) { updateViewField(authModel_, AuthModel::PasswordField); valid = false; } } registrationModel_->validateField(RegistrationModel::LoginNameField); checkPassword(); checkPassword2(); if (!registrationModel_->valid()) valid = false; return valid; }
UpdatePasswordWidget::UpdatePasswordWidget(const User& user, RegistrationModel *registrationModel, AuthModel *authModel, WContainerWidget *parent) : WTemplateFormView(tr("Wt.Auth.template.update-password"), parent), user_(user), registrationModel_(registrationModel), authModel_(authModel) { registrationModel_->setValue(RegistrationModel::LoginNameField, user.identity(Identity::LoginName)); registrationModel_->setReadOnly(RegistrationModel::LoginNameField, true); if (authModel_->baseAuth()->emailVerificationEnabled()) { /* * This is set in the model so that the password checker can take * into account whether the password is derived from the email * address. */ registrationModel_->setValue(RegistrationModel::EmailField, WT_USTRING::fromUTF8(user.email() + " " + user.unverifiedEmail())); registrationModel_->setVisible(RegistrationModel::EmailField, false); } WPushButton *okButton = new WPushButton(tr("Wt.WMessageBox.Ok")); WPushButton *cancelButton = new WPushButton(tr("Wt.WMessageBox.Cancel")); if (authModel_) { authModel_->setValue(AuthModel::LoginNameField, user.identity(Identity::LoginName)); updateViewField(authModel_, AuthModel::PasswordField); authModel_->configureThrottling(okButton); WLineEdit *password = resolve<WLineEdit *>(AuthModel::PasswordField); password->setFocus(); } updateView(registrationModel_); WLineEdit *password = resolve<WLineEdit *> (RegistrationModel::ChoosePasswordField); WLineEdit *password2 = resolve<WLineEdit *> (RegistrationModel::RepeatPasswordField); WText *password2Info = resolve<WText *> (RegistrationModel::RepeatPasswordField + std::string("-info")); registrationModel_->validatePasswordsMatchJS(password, password2, password2Info); if (!authModel_) password->setFocus(); okButton->clicked().connect(this, &UpdatePasswordWidget::doUpdate); cancelButton->clicked().connect(this, &UpdatePasswordWidget::close); bindWidget("ok-button", okButton); bindWidget("cancel-button", cancelButton); }
void UpdatePasswordWidget::checkPassword2() { updateModelField(registrationModel_, RegistrationModel::RepeatPasswordField); registrationModel_->validateField(RegistrationModel::RepeatPasswordField); updateViewField(registrationModel_, RegistrationModel::RepeatPasswordField); }