Prevent duplicate user creation

This commit is contained in:
emeric
2018-04-18 13:23:44 +02:00
parent 7c841f6b46
commit df0bd4ad0e
2 changed files with 47 additions and 3 deletions
+1 -3
View File
@@ -77,12 +77,10 @@ class InitWizardModel : public Wt::WFormModel
if (field == PasswordField)
{
// Password is mandatory if we create the user
if (!valueText(PasswordField).empty())
{
// Evaluate the strength of the password
Wt::Auth::AbstractPasswordService::StrengthValidatorResult res
= Database::Handler::getPasswordService().strengthValidator()->evaluateStrength(valueText(PasswordField),
auto res = Database::Handler::getPasswordService().strengthValidator()->evaluateStrength(valueText(PasswordField),
valueText(AdminLoginField), "");
if (!res.isValid())
+46
View File
@@ -118,6 +118,52 @@ class UserModel : public Wt::WFormModel
}
}
Wt::WString getLogin() const
{
if (_userId)
{
auto authUser = LmsApp->getDb().getUserDatabase().findWithId( std::to_string(*_userId) );
return authUser.identity(Wt::Auth::Identity::LoginName);
}
else
return valueText(LoginField);
}
bool validateField(Field field)
{
Wt::WString error;
if (field == LoginField)
{
auto user = LmsApp->getDb().getUserDatabase().findWithIdentity(Wt::Auth::Identity::LoginName, valueText(LoginField));
if (user.isValid())
error = Wt::WString::tr("Lms.Admin.User.user-already-exists");
else
return Wt::WFormModel::validateField(field);
}
else if (field == PasswordField)
{
if (!valueText(PasswordField).empty())
{
// Evaluate the strength of the password
auto res = Database::Handler::getPasswordService().strengthValidator()->evaluateStrength(valueText(PasswordField), getLogin(), "");
if (!res.isValid())
error = res.message();
}
else
return Wt::WFormModel::validateField(field);
}
else
{
return Wt::WFormModel::validateField(field);
}
setValidation(field, Wt::WValidator::Result( error.empty() ? Wt::ValidationState::Valid : Wt::ValidationState::Invalid, error));
return (validation(field).state() == Wt::ValidationState::Valid);
}
boost::optional<int> getBitrateLimitRow(Wt::WString value)
{
for (int i = 0; i < _bitrateModel->rowCount(); ++i)