diff --git a/src/main/java/org/example/demo/beans/PasswortManagedBean.java b/src/main/java/org/example/demo/beans/PasswortManagedBean.java new file mode 100644 index 0000000..e93b9de --- /dev/null +++ b/src/main/java/org/example/demo/beans/PasswortManagedBean.java @@ -0,0 +1,70 @@ +package uebung; + +import java.io.Serializable; + +import jakarta.enterprise.context.SessionScoped; +import jakarta.faces.application.FacesMessage; +import jakarta.faces.component.UIComponent; +import jakarta.faces.context.FacesContext; +import jakarta.faces.validator.ValidatorException; +import jakarta.inject.Named; + +@Named +@SessionScoped +public class PasswortManagedBean implements Serializable { + private String passwort; + + public PasswortManagedBean() { + passwort = ""; + } + + public String getPasswort() { + return passwort; + } + + public void setPasswort(String passwort) { + this.passwort = passwort; + } + + public void validate(FacesContext context, UIComponent ui_component, + Object object) throws ValidatorException { + + String eingabe = (String) object; + +// boolean enthaeltGrossbuchstaben = false; +// boolean enthaeltKleinbuchstaben = false; +// boolean enthaeltZahl = false; +// for (int i = 0; i < eingabe.length(); i++) { +// if(Character.isUpperCase(eingabe.charAt(i))){enthaeltGrossbuchstaben = true;} +// if(Character.isLowerCase(eingabe.charAt(i))){enthaeltKleinbuchstaben = true;} +// if(Character.isDigit(eingabe.charAt(i))){enthaeltZahl = true;} +// } +// if(!(enthaeltGrossbuchstaben && enthaeltKleinbuchstaben && enthaeltZahl)){ +// throw new ValidatorException(new FacesMessage( +// "Fehler beim Validieren des Passworts!")); +// } + +// oder alternativ mit einem regulaeren Ausdruck: + if (!eingabe.matches(".*[A-Z].*") + || !eingabe.matches(".*[a-z].*") + || !eingabe.matches(".*[0-9].*")) { + throw new ValidatorException(new FacesMessage( + "Fehler beim Validieren des Passworts!")); + } + +// oder alternativ mit einem verbesserten RegEx: +// ?= bewegt den Suchzeiger innerhalb des Quellstrings nicht weiter und +// sucht ob direkt nach der aktuellen Position das angegebene Pattern folgt. +// - ^ positioniert den Zeiger am Anfang +// - (?=.*\\d) prüft, ob nach der aktuellen Position (Anfang) beliebige Zeichen +// und dann eine Ziffer folgt. Somit wird geprüft, ob im String eine +// Ziffer enthalten ist. Der Zeiger bleibt am Anfang stehen. +// - Die weiteren (?=.*...) prüfen, ob nach der aktuellen Position (Anfang) +// kleine Buchstaben (?=.*[a-z]) oder große Buchstaben (?=.*[A-Z]) folgen. +// - Das letzte .* sagt aus, dass danach beliebige weitere Zeichen folgen können. + if(!eingabe.matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*$")){ + throw new ValidatorException(new FacesMessage( + "Fehler beim Validieren des Passworts!")); + } + } +} diff --git a/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml b/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml new file mode 100644 index 0000000..5a427cb --- /dev/null +++ b/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml @@ -0,0 +1,27 @@ + + + + + Passwort Validierer + + + + + + + + +
+
+ +
+
+ + diff --git a/src/main/webapp/uebung4/aufgabe16/passwortValidiererRegEx.xhtml b/src/main/webapp/uebung4/aufgabe16/passwortValidiererRegEx.xhtml new file mode 100644 index 0000000..8bc9d60 --- /dev/null +++ b/src/main/webapp/uebung4/aufgabe16/passwortValidiererRegEx.xhtml @@ -0,0 +1,28 @@ + + + + + Passwort Validierer + + + + + + + + + + + + + + + +