From 13f9f4e7c1d743e583b4f11fb93a212eb18ff3ed Mon Sep 17 00:00:00 2001 From: Tom Lutzenberger <t.lutzenberger@adito.de> Date: Fri, 28 Aug 2020 10:03:14 +0200 Subject: [PATCH] #1058862: Improve validation and template after review --- .../Usersettings_entity.aod | 6 + .../currentpassword/onValidation.js | 8 +- .../currentpassword/stateProcess.js | 11 ++ .../entityfields/jpassword/onValidation.js | 14 ++- .../jpasswordrepeat/onValidation.js | 6 +- .../_____LANGUAGE_EXTRA.aod | 48 +++++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 118 ++++++++++++------ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 48 +++++++ .../UsersettingsEdit_view.aod | 48 ------- process/UserSettings_lib/process.js | 2 + 10 files changed, 215 insertions(+), 94 deletions(-) create mode 100644 entity/Usersettings_entity/entityfields/currentpassword/stateProcess.js diff --git a/entity/Usersettings_entity/Usersettings_entity.aod b/entity/Usersettings_entity/Usersettings_entity.aod index fd32d56552..cf2a798f71 100644 --- a/entity/Usersettings_entity/Usersettings_entity.aod +++ b/entity/Usersettings_entity/Usersettings_entity.aod @@ -60,6 +60,11 @@ <name>jPasswordRepeat</name> <title>Repeat password</title> <contentType>PASSWORD</contentType> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> <onValidation>%aditoprj%/entity/Usersettings_entity/entityfields/jpasswordrepeat/onValidation.js</onValidation> </entityField> <entityField> @@ -69,6 +74,7 @@ <name>currentPassword</name> <title>Current password</title> <contentType>PASSWORD</contentType> + <stateProcess>%aditoprj%/entity/Usersettings_entity/entityfields/currentpassword/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Usersettings_entity/entityfields/currentpassword/onValidation.js</onValidation> </entityField> </entityFields> diff --git a/entity/Usersettings_entity/entityfields/currentpassword/onValidation.js b/entity/Usersettings_entity/entityfields/currentpassword/onValidation.js index 2aff40611b..b297a811ec 100644 --- a/entity/Usersettings_entity/entityfields/currentpassword/onValidation.js +++ b/entity/Usersettings_entity/entityfields/currentpassword/onValidation.js @@ -1,4 +1,5 @@ import("system.result"); +import("system.neon"); import("system.translate"); import("system.tools"); import("system.vars"); @@ -8,6 +9,9 @@ import("UserSettings_lib"); let login = UserSettingUtil.getValue("title"); let password = vars.get("$local.value"); -if(password && !tools.verifyPassword(login, password)) { - result.string(translate.text("Wrong password")); + +if(vars.get("$property.currentPassword.state") !== neon.COMPONENTSTATE_INVISIBLE) { + if(password && !tools.verifyPassword(login, password)) { + result.string(translate.text("Wrong password")); + } } diff --git a/entity/Usersettings_entity/entityfields/currentpassword/stateProcess.js b/entity/Usersettings_entity/entityfields/currentpassword/stateProcess.js new file mode 100644 index 0000000000..c2a5cd75d9 --- /dev/null +++ b/entity/Usersettings_entity/entityfields/currentpassword/stateProcess.js @@ -0,0 +1,11 @@ +import("system.neon"); +import("system.result"); +import("system.tools"); +import("UserSettings_lib"); + + +let login = UserSettingUtil.getValue("title"); + +if(tools.verifyPassword(login, "")) { + result.string(neon.COMPONENTSTATE_INVISIBLE); +} diff --git a/entity/Usersettings_entity/entityfields/jpassword/onValidation.js b/entity/Usersettings_entity/entityfields/jpassword/onValidation.js index ee0296a725..a2d5661928 100644 --- a/entity/Usersettings_entity/entityfields/jpassword/onValidation.js +++ b/entity/Usersettings_entity/entityfields/jpassword/onValidation.js @@ -1,3 +1,4 @@ +import("system.neon"); import("system.result"); import("system.translate"); import("system.tools"); @@ -10,14 +11,19 @@ let policyMessages = tools.validatePasswordPolicies(newPassword, vars.get("$sys. let messages = []; if(newPassword) { - if(newPassword === currentPassword) { - result.string(translate.text("New password must not be the same as the current password")); + if(vars.get("$property.currentPassword.state") !== neon.COMPONENTSTATE_INVISIBLE) { + if(!currentPassword) { + messages.push(translate.text("Enter current password to verify")); + } else if(newPassword === currentPassword) { + messages.push(translate.text("New password must not be the same as the current password")); + } } - + if(policyMessages.length > 0) { for(let msg in policyMessages) { messages.push(policyMessages[msg]); } - result.string(messages.join("\n", messages)); } + + result.string(messages.join("\n", messages)); } diff --git a/entity/Usersettings_entity/entityfields/jpasswordrepeat/onValidation.js b/entity/Usersettings_entity/entityfields/jpasswordrepeat/onValidation.js index 9fa42ffff6..5ec99b485f 100644 --- a/entity/Usersettings_entity/entityfields/jpasswordrepeat/onValidation.js +++ b/entity/Usersettings_entity/entityfields/jpasswordrepeat/onValidation.js @@ -6,8 +6,6 @@ import("system.vars"); let passwordRepeat = vars.get("$local.value"); let newPassword = vars.get("$field.jPassword"); -if(passwordRepeat) { - if(newPassword !== passwordRepeat) { - result.string(translate.text("Passwords do not match")); - } +if(newPassword !== passwordRepeat) { + result.string(translate.text("Passwords do not match")); } diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index a70bdc4dad..d09abcb5d7 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7149,6 +7149,54 @@ <entry> <key>export using the selected template</key> </entry> + <entry> + <key>Input value</key> + </entry> + <entry> + <key>Output value</key> + </entry> + <entry> + <key>Enddatum</key> + </entry> + <entry> + <key>Startdatum</key> + </entry> + <entry> + <key>Mapping</key> + </entry> + <entry> + <key>Typ</key> + </entry> + <entry> + <key>Mappings</key> + </entry> + <entry> + <key>Sort up</key> + </entry> + <entry> + <key>Titel</key> + </entry> + <entry> + <key>Set missing address locations</key> + </entry> + <entry> + <key>Sort down</key> + </entry> + <entry> + <key>FavoriteFilter_view</key> + </entry> + <entry> + <key>Set all address locations</key> + </entry> + <entry> + <key>Members</key> + </entry> + <entry> + <key>Gruppenname</key> + </entry> + <entry> + <key>Enter current password to verify</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index ce7257504d..784b00d216 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -707,6 +707,9 @@ <key>None</key> <value>Keine</value> </entry> + <entry> + <key>Edit workflow</key> + </entry> <entry> <key>Date of request</key> <value>Datum der Anforderung</value> @@ -8992,9 +8995,6 @@ Bitte Datumseingabe prüfen</value> <entry> <key>Receive new Department Permission</key> </entry> - <entry> - <key>Selection placeholder</key> - </entry> <entry> <key>Grant new Department Permission</key> <value>Neue Abteilungs-Berechtigung vergeben</value> @@ -9004,56 +9004,76 @@ Bitte Datumseingabe prüfen</value> <value>Aktuelles Passwort</value> </entry> <entry> - <key>Calendar maintime start</key> - <value>Kalender-Kernzeit Beginn</value> + <key>New password</key> + <value>Neues Passwort</value> </entry> <entry> - <key>favorties</key> + <key>Repeat password</key> + <value>Passwort wiederholen</value> </entry> <entry> - <key>Fantasy</key> + <key>Enter current password to verify</key> + <value>Aktuelles Passwort zur Verifizierung eingeben</value> </entry> <entry> - <key>Password must contain special characters</key> + <key>Selection placeholder</key> + <value>Suche Platzhalter</value> </entry> <entry> - <key>Longitude</key> + <key>SELECTION_POSTFIX</key> + <value>Hinten</value> </entry> <entry> - <key>Password must be at least %0 characters</key> + <key>SELECTION_PREFIX</key> + <value>Vorne</value> </entry> <entry> - <key>Permission Procurer Department</key> - <value>Rechteempfänger Abteilung</value> + <key>SELECTION_BOTH</key> + <value>Vorne und hinten</value> </entry> <entry> - <key>favorite</key> + <key>SELECTION_NEITHER</key> + <value>Berücksichtigen</value> </entry> <entry> - <key>Repeat password</key> - <value>Passwort wiederholen</value> + <key>SELECTION_NULL</key> + <value>Ignorieren</value> </entry> <entry> - <key>{SENT_MAIL}</key> + <key>Selection ignore case</key> + <value>Groß-/Kleinschreibung ignorieren</value> </entry> <entry> - <key>SELECTION_NULL</key> + <key>Calendar hour divider</key> + <value>Stundenunterteilung</value> </entry> <entry> - <key>Selection ignore case</key> + <key>Calendar maintime start</key> + <value>Kernzeit Beginn</value> </entry> <entry> <key>Calendar maintime end</key> - <value>Kalender-Kernzeit Ende</value> + <value>Kernzeit Ende</value> </entry> <entry> - <key>Release</key> + <key>{SENT_MAIL}</key> </entry> <entry> - <key>SELECTION_NEITHER</key> + <key>favorties</key> + </entry> + <entry> + <key>Fantasy</key> </entry> <entry> - <key>Password must contain numbers</key> + <key>Permission Procurer Department</key> + <value>Rechteempfänger Abteilung</value> + </entry> + <entry> + <entry> + <key>favorite</key> + </entry> + <entry> + <key>Release</key> </entry> <entry> <key>granted permission</key> @@ -9065,10 +9085,6 @@ Bitte Datumseingabe prüfen</value> <key>Permission Procurer User</key> <value>Rechteempfänger Benutzer</value> </entry> - <entry> - <key>New password</key> - <value>Neues Passwort</value> - </entry> <entry> <key>and open Report</key> </entry> @@ -9079,6 +9095,9 @@ Bitte Datumseingabe prüfen</value> <key>Add Recipients</key> <value>Teilnehmer hinzufügen</value> </entry> + <entry> + <key>Grant new User Permission</key> + </entry> <entry> <key>{SEND_MAIL}</key> </entry> @@ -9105,34 +9124,61 @@ Bitte Datumseingabe prüfen</value> <value>Neue Abteilungs-Berechtigung vergeben</value> </entry> <entry> - <key>Password must contain spaces</key> + <key>favorites</key> </entry> <entry> - <key>favorites</key> + <key>Input value</key> </entry> <entry> - <key>The use of any of your previous %0 passwords is prohibited</key> + <key>Output value</key> </entry> <entry> - <key>Total in euros</key> + <key>Enddatum</key> </entry> <entry> - <key>Add Participants</key> + <key>Startdatum</key> </entry> <entry> - <key>Calendar hour divider</key> + <key>Mapping</key> </entry> <entry> - <key>SELECTION_BOTH</key> + <key>Typ</key> </entry> <entry> - <key>SELECTION_POSTFIX</key> + <key>Mappings</key> </entry> <entry> - <key>Password must contain letters</key> + <key>Sort up</key> </entry> <entry> - <key>SELECTION_PREFIX</key> + <key>Titel</key> + </entry> + <entry> + <key>Set missing address locations</key> + </entry> + <entry> + <key>Sort down</key> + </entry> + <entry> + <key>FavoriteFilter_view</key> + </entry> + <entry> + <key>Set all address locations</key> + </entry> + <entry> + <key>Members</key> + </entry> + <entry> + <key>Gruppenname</key> + </entry> + <entry> + <key>Total in euros</key> + </entry> + <entry> + <key>Add Participants</key> + </entry> + <entry> + <key>Add Recipients</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index e9ae9aabca..a92be903f8 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7216,6 +7216,54 @@ <entry> <key>export using the selected template</key> </entry> + <entry> + <key>Input value</key> + </entry> + <entry> + <key>Output value</key> + </entry> + <entry> + <key>Enddatum</key> + </entry> + <entry> + <key>Startdatum</key> + </entry> + <entry> + <key>Mapping</key> + </entry> + <entry> + <key>Typ</key> + </entry> + <entry> + <key>Mappings</key> + </entry> + <entry> + <key>Sort up</key> + </entry> + <entry> + <key>Titel</key> + </entry> + <entry> + <key>Set missing address locations</key> + </entry> + <entry> + <key>Sort down</key> + </entry> + <entry> + <key>FavoriteFilter_view</key> + </entry> + <entry> + <key>Set all address locations</key> + </entry> + <entry> + <key>Members</key> + </entry> + <entry> + <key>Gruppenname</key> + </entry> + <entry> + <key>Enter current password to verify</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod index 6d5d9d8057..4a500fdf72 100644 --- a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod +++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod @@ -34,53 +34,5 @@ </entityFieldLink> </fields> </genericViewTemplate> - <genericViewTemplate> - <name>SearchEdit</name> - <editMode v="true" /> - <showDrawer v="true" /> - <drawerCaption>Search</drawerCaption> - <fixedDrawer v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>d028eaa3-7250-4b9f-be94-4c097b426506</name> - <entityField>selectionIgnoreCase</entityField> - </entityFieldLink> - <entityFieldLink> - <name>e632f409-891a-4c02-b077-962d40b657f9</name> - <entityField>selectionPlaceholder</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>CalendarEdit</name> - <editMode v="true" /> - <showDrawer v="true" /> - <drawerCaption>Calendar</drawerCaption> - <fixedDrawer v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>6c58b326-3fe6-4b1d-a6d4-1735861c419a</name> - <entityField>calMaintimeStart</entityField> - </entityFieldLink> - <entityFieldLink> - <name>1463dddd-efa6-4fff-bb7e-ee1bc190f077</name> - <entityField>calMaintimeEnd</entityField> - </entityFieldLink> - <entityFieldLink> - <name>4bb63da1-6a83-4f68-8605-11dd43501b7b</name> - <entityField>calHourdivider</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>OtherSettings</name> - <editMode v="true" /> - <showDrawer v="true" /> - <drawerCaption>Others</drawerCaption> - <fixedDrawer v="true" /> - <entityField>#ENTITY</entityField> - </genericViewTemplate> </children> </neonView> diff --git a/process/UserSettings_lib/process.js b/process/UserSettings_lib/process.js index 02bf19629a..69c4108c4d 100644 --- a/process/UserSettings_lib/process.js +++ b/process/UserSettings_lib/process.js @@ -19,11 +19,13 @@ function UserSettingUtil () {} tools.PASSWORD, ]; let paramSettings = [ + /* "calHourdivider", "calMaintimeEnd", "calMaintimeStart", "selectionIgnoreCase", "selectionPlaceholder", + */ ]; -- GitLab