Skip to content
Snippets Groups Projects
Commit fc612dc0 authored by srosse's avatar srosse
Browse files

Merge OpenOLAT 12.0 to OpenOLAT default branch with 9cb60b4d39ca39cdd68d9fd837f98fb49261c8ee

parents 0424f011 5621d0b2
No related branches found
No related tags found
No related merge requests found
...@@ -219,6 +219,7 @@ details.delete.acknowledge=Best\u00E4tigung ...@@ -219,6 +219,7 @@ details.delete.acknowledge=Best\u00E4tigung
details.delete.acknowledge.error=Bitte best\u00E4tigen. details.delete.acknowledge.error=Bitte best\u00E4tigen.
details.delete.acknowledge.msg=Alle Dateien werden definitiv gel\u00F6scht und k\u00F6nnen nicht mehr wiederhergestellt werden. details.delete.acknowledge.msg=Alle Dateien werden definitiv gel\u00F6scht und k\u00F6nnen nicht mehr wiederhergestellt werden.
details.delete.alt={0} l\u00F6schen details.delete.alt={0} l\u00F6schen
details.delete.soft.acknowledge.msg=Die Lernressource wird als gel\u00F6scht markiert.
details.delete.soft.desc=Mit dieser Funktion wird die Lernressource als gel\u00F6scht markiert. details.delete.soft.desc=Mit dieser Funktion wird die Lernressource als gel\u00F6scht markiert.
details.delete.soft.desc.1=Die Benutzerdaten werden aus dem Kurs entfernt. details.delete.soft.desc.1=Die Benutzerdaten werden aus dem Kurs entfernt.
details.delete.soft.desc.2=Nur noch der Kursbesitzer hat Zugriff auf den Kurs. details.delete.soft.desc.2=Nur noch der Kursbesitzer hat Zugriff auf den Kurs.
......
...@@ -223,6 +223,7 @@ details.delete.managed=managed ...@@ -223,6 +223,7 @@ details.delete.managed=managed
details.delete.notOrphan=still referenced details.delete.notOrphan=still referenced
details.delete.notOwner=not owner details.delete.notOwner=not owner
details.delete.references=Do you wish to delete the referenced learning resources too? details.delete.references=Do you wish to delete the referenced learning resources too?
details.delete.soft.acknowledge.msg=The learning resource will be marked as deleted.
details.delete.soft.auto.desc=<strong>The course will be automatically deleted at {0}.</strong> details.delete.soft.auto.desc=<strong>The course will be automatically deleted at {0}.</strong>
details.delete.soft.desc=Using this method the learning resource will be marked as deleted. details.delete.soft.desc=Using this method the learning resource will be marked as deleted.
details.delete.soft.desc.1=The user data will be removed from the course. details.delete.soft.desc.1=The user data will be removed from the course.
......
...@@ -223,6 +223,7 @@ details.delete.managed=managed ...@@ -223,6 +223,7 @@ details.delete.managed=managed
details.delete.notOrphan=encore r\u00E9f\u00E9renc\u00E9 details.delete.notOrphan=encore r\u00E9f\u00E9renc\u00E9
details.delete.notOwner=pas propri\u00E9taire details.delete.notOwner=pas propri\u00E9taire
details.delete.references=Voulez-vous effacer les objects didactiques r\u00E9f\u00E9renc\u00E9s par cette resource? details.delete.references=Voulez-vous effacer les objects didactiques r\u00E9f\u00E9renc\u00E9s par cette resource?
details.delete.soft.acknowledge.msg=La ressource didactique sera marqu\u00E9e comme effac\u00E9e.
details.delete.soft.auto.desc=<strong>Le cours sera automatiquement effac\u00E9 le {0}.</strong> details.delete.soft.auto.desc=<strong>Le cours sera automatiquement effac\u00E9 le {0}.</strong>
details.delete.soft.desc=Avec cette fonction, la ressource didactique sera marqu\u00E9e comme effac\u00E9e. details.delete.soft.desc=Avec cette fonction, la ressource didactique sera marqu\u00E9e comme effac\u00E9e.
details.delete.soft.desc.1=Les donn\u00E9es utilisateurs du cours seront effac\u00E9es. details.delete.soft.desc.1=Les donn\u00E9es utilisateurs du cours seront effac\u00E9es.
......
...@@ -104,7 +104,7 @@ public class ConfirmDeleteSoftlyController extends FormBasicController { ...@@ -104,7 +104,7 @@ public class ConfirmDeleteSoftlyController extends FormBasicController {
} }
uifactory.addStaticTextElement("rows", "details.delete.entries", message.toString(), layoutCont); uifactory.addStaticTextElement("rows", "details.delete.entries", message.toString(), layoutCont);
String[] acknowledge = new String[] { translate("details.delete.acknowledge.msg") }; String[] acknowledge = new String[] { translate("details.delete.soft.acknowledge.msg") };
acknowledgeEl = uifactory.addCheckboxesHorizontal("confirm", "details.delete.acknowledge", layoutCont, new String[]{ "" }, acknowledge); acknowledgeEl = uifactory.addCheckboxesHorizontal("confirm", "details.delete.acknowledge", layoutCont, new String[]{ "" }, acknowledge);
FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
......
...@@ -33,6 +33,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; ...@@ -33,6 +33,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event; import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
...@@ -52,6 +53,9 @@ public class ChangePasswordForm extends FormBasicController { ...@@ -52,6 +53,9 @@ public class ChangePasswordForm extends FormBasicController {
private String _oldpass = ""; private String _oldpass = "";
private String _newpass = ""; private String _newpass = "";
@Autowired
private UserManager userManager;
/** /**
* @param name * @param name
...@@ -95,17 +99,23 @@ public class ChangePasswordForm extends FormBasicController { ...@@ -95,17 +99,23 @@ public class ChangePasswordForm extends FormBasicController {
@Override @Override
protected boolean validateFormLogic (UserRequest ureq) { protected boolean validateFormLogic (UserRequest ureq) {
if (!UserManager.getInstance().syntaxCheckOlatPassword(newpass1.getValue())) { boolean allOk = true;
newpass1.clearError();
newpass2.clearError();
if (!userManager.syntaxCheckOlatPassword(newpass1.getValue())) {
newpass1.setErrorKey("form.checkPassword", null); newpass1.setErrorKey("form.checkPassword", null);
return false; allOk &= false;
} }
if (!newpass1.getValue().equals(newpass2.getValue())) { if (!newpass1.getValue().equals(newpass2.getValue())) {
newpass1.setValue(""); newpass1.setValue("");
newpass2.setValue(""); newpass2.setValue("");
newpass2.setErrorKey("error.password.nomatch", null); newpass2.setErrorKey("error.password.nomatch", null);
return false; allOk &= false;
} }
return true;
return allOk & super.validateFormLogic(ureq);
} }
@Override @Override
......
...@@ -30,9 +30,11 @@ import org.junit.Test; ...@@ -30,9 +30,11 @@ import org.junit.Test;
*/ */
public class UserNameAndPasswordSyntaxCheckerWithRegexpTest { public class UserNameAndPasswordSyntaxCheckerWithRegexpTest {
/**
* Min. 7 characters, one uppercase, one lowercase, one number
*/
@Test @Test
public void testCustom() { public void testCustomPasswordCheck_upperLowerCase_number() {
//Min. 7 characters, one uppercase, one lowercase, one number
UserNameAndPasswordSyntaxCheckerWithRegexp checker = new UserNameAndPasswordSyntaxCheckerWithRegexp(); UserNameAndPasswordSyntaxCheckerWithRegexp checker = new UserNameAndPasswordSyntaxCheckerWithRegexp();
checker.setPasswordRegExp("(?=^.{7,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$"); checker.setPasswordRegExp("(?=^.{7,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$");
...@@ -41,4 +43,21 @@ public class UserNameAndPasswordSyntaxCheckerWithRegexpTest { ...@@ -41,4 +43,21 @@ public class UserNameAndPasswordSyntaxCheckerWithRegexpTest {
Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanu#1"));//less than 7 characters Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanu#1"));//less than 7 characters
Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanuunch"));//no number Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanuunch"));//no number
} }
/**
* Min. 8 characters, one uppercase, one lowercase, one number, one special character
*/
@Test
public void testCustomPasswordCheck_upperLowerCase_number_special() {
UserNameAndPasswordSyntaxCheckerWithRegexp checker = new UserNameAndPasswordSyntaxCheckerWithRegexp();
checker.setPasswordRegExp("(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z])(?=.*[$@$!%*#?&]).*$");
Assert.assertTrue(checker.syntaxCheckOlatPassword("Kanu#010"));
Assert.assertTrue(checker.syntaxCheckOlatPassword("?Ryomou#010"));
Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanuunc1"));
Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanu#10"));//less than 8 characters
Assert.assertFalse(checker.syntaxCheckOlatPassword("Kanuunch"));//no number
Assert.assertFalse(checker.syntaxCheckOlatPassword("kanu8#10"));
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment