From 1ce6aa781ec950ea00c082e99859a207a22369b0 Mon Sep 17 00:00:00 2001 From: Tazio Ceri Date: Sat, 27 Jun 2020 00:13:54 +0200 Subject: [PATCH] Review comments --- approot/admin-user.xml | 11 ------ conf/lms | 9 +++++ src/lms/ui/admin/UserView.cpp | 66 ++++++++++++++++++----------------- 3 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 conf/lms diff --git a/approot/admin-user.xml b/approot/admin-user.xml index 14f69aa0..9ce8c4f4 100644 --- a/approot/admin-user.xml +++ b/approot/admin-user.xml @@ -38,17 +38,6 @@ ${password-info class="help-block"} -
- -
- - ${external-auth} - ${external-auth-info class="help-block"} - -
-
${}
diff --git a/conf/lms b/conf/lms new file mode 100644 index 00000000..c53af2a1 --- /dev/null +++ b/conf/lms @@ -0,0 +1,9 @@ +account required pam_unix.so try_first_pass +account sufficient pam_localuser.so + +auth required pam_unix.so try_first_pass + +password required pam_deny.so + +session required pam_unix.so try_first_pass + diff --git a/src/lms/ui/admin/UserView.cpp b/src/lms/ui/admin/UserView.cpp index 961bd906..ea94a769 100644 --- a/src/lms/ui/admin/UserView.cpp +++ b/src/lms/ui/admin/UserView.cpp @@ -111,6 +111,39 @@ class UserModel : public Wt::WFormModel } private: + + Wt::WString validatePassword() const + { + Wt::WString error; + + if (Wt::asNumber(value(ExternalAuthField))) + { + if (!valueText(PasswordField).empty()) + { + error = Wt::WString::tr("Lms.password_must_be_empty_for_ext"); + } + } + else if (!valueText(PasswordField).empty()) + { + if (Wt::asNumber(value(DemoField))) + { + // Demo account: password must be the same as the login name + if (valueText(PasswordField) != getLoginName()) + error = Wt::WString::tr("Lms.Admin.User.demo-password-invalid"); + } + else + { + // Evaluate the strength of the password for non demo accounts + if (!ServiceProvider<::Auth::IPasswordService>::get()->evaluatePasswordStrength(getLoginName(), valueText(PasswordField).toUTF8())) + error = Wt::WString::tr("Lms.password-too-weak"); + } + } + else + { + error = Wt::WString::tr("Lms.password-must-not-be-empty"); + } + return error; + } void loadData() { @@ -166,33 +199,7 @@ class UserModel : public Wt::WFormModel } else if (field == PasswordField) { - if (Wt::asNumber(value(ExternalAuthField))) - { - if (!valueText(PasswordField).empty()) - { - error = Wt::WString::tr("Lms.password_must_be_empty_for_ext"); - } - } - else if (!valueText(PasswordField).empty()) - { - if (Wt::asNumber(value(DemoField))) - { - // Demo account: password must be the same as the login name - if (valueText(PasswordField) != getLoginName()) - error = Wt::WString::tr("Lms.Admin.User.demo-password-invalid"); - } - else - { - // Evaluate the strength of the password for non demo accounts - if (!ServiceProvider<::Auth::IPasswordService>::get()->evaluatePasswordStrength(getLoginName(), valueText(PasswordField).toUTF8())) - error = Wt::WString::tr("Lms.password-too-weak"); - - } - } - else - { - error = Wt::WString::tr("Lms.password-must-not-be-empty"); - } + error = validatePassword(); } else if (field == DemoField) { @@ -201,11 +208,6 @@ class UserModel : public Wt::WFormModel if (Wt::asNumber(value(DemoField)) && Database::User::getDemo(LmsApp->getDbSession())) error = Wt::WString::tr("Lms.Admin.User.demo-account-already-exists"); } -// else if (field == ExternalAuthField) -// { -// if (!valueText(PasswordField).empty()) -// error = Wt::WString::tr("Lms.password_must_be_empty_for_ext"); -// } if (error.empty()) return Wt::WFormModel::validateField(field);