diff --git a/messages/uniworx/categories/settings/de-de-formal.msg b/messages/uniworx/categories/settings/de-de-formal.msg index 1267b8c44..f04b1cde1 100644 --- a/messages/uniworx/categories/settings/de-de-formal.msg +++ b/messages/uniworx/categories/settings/de-de-formal.msg @@ -34,7 +34,7 @@ ShowSexTip: Sollen in Kursteilnehmer:innen-Tabellen u.Ä. die Geschlechter der N PDFPassword: Passwort zur Verschlüsselung von PDF Anhängen an Email Benachrichtigungens PDFPasswordTip: Achtung, dieses Passwort ist für FRADrive Administratoren einsehbar und wird unverschlüsselt gespeichert! PDFPasswordInvalid c@Char: Bitte ein nicht-triviales Passwort für PDF Email Anhänge eintragen! Ungültiges Zeichen: #{char2Text c} -PDFPasswordTooShort n@Int: Bitte ein PDF Passwort mit mindestens #{show n} Zeichen wählen. +PDFPasswordTooShort n@Int: Bitte ein PDF Passwort mit mindestens #{show n} Zeichen wählen oder Post-Versand aktivieren PrefersPostal: Sollen Benachrichtigung möglichst per Post versendet werden anstatt per Email? PostalTip: Postversand kann in Rechnung gestellt werden und ist derzeit nur für Benachrichtigungen über Erneuerung und Ablauf von Qualifikation, wie z.B. Führerscheine, verfügbar. PostAddress: Postalische Adresse diff --git a/messages/uniworx/categories/settings/en-eu.msg b/messages/uniworx/categories/settings/en-eu.msg index a8ddfdfad..3c63fc06a 100644 --- a/messages/uniworx/categories/settings/en-eu.msg +++ b/messages/uniworx/categories/settings/en-eu.msg @@ -34,7 +34,7 @@ ShowSexTip: Should users' sex be displayed in (among others) lists of course par PDFPassword: Password to lock PDF email attachments PDFPasswordTip: Please note that this password is displayed to FRADrive admins and is saved unencrypted PDFPasswordInvalid c: Please supply a sensible password for encrypting PDF email attachments! Invalid character #{char2Text c} -PDFPasswordTooShort n: Please provide a password with at least #{show n} characters. +PDFPasswordTooShort n: Please provide a password with at least #{show n} characters or choose postal mail PrefersPostal: Should notifications preferably send by post instead of email? PostalTip: Mailing may incur a fee and is currently only avaulable for qualification expiry notifications, such as driving lincence renewal. PostAddress: Postal address diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index 9f94c00e4..93c2b9ff8 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -66,7 +66,7 @@ data SettingsForm = SettingsForm , stgWarningDays :: NominalDiffTime , stgShowSex :: Bool - , stgPinPassword :: Text + , stgPinPassword :: Maybe Text , stgPrefersPostal :: Bool , stgPostAddress :: Maybe StoredMarkup @@ -130,14 +130,14 @@ makeSettingForm template html = do <*> apopt checkBoxField (fslI MsgShowSex & setTooltip MsgShowSexTip) (stgShowSex <$> template) <* aformSection MsgFormNotifications - <*> areq (textField & cfStrip) (fslI MsgPDFPassword & setTooltip MsgPDFPasswordTip) (stgPinPassword <$> template) + <*> aopt (textField & cfStrip) (fslI MsgPDFPassword & setTooltip MsgPDFPasswordTip) (stgPinPassword <$> template) <*> apopt checkBoxField (fslI MsgPrefersPostal & setTooltip MsgPostalTip) (stgPrefersPostal <$> template) <*> aopt htmlField (fslI MsgPostAddress & setTooltip MsgPostAddressTip) (stgPostAddress <$> template) <*> examOfficeForm (stgExamOfficeSettings <$> template) <*> schoolsForm (stgSchools <$> template) <*> notificationForm (stgNotificationSettings <$> template) - return (result, widget) -- no validation required here + return (result, widget) -- no validation here, done later by validateSettings where themeList = [Option (toMessage t) t (toPathPiece t) | t <- universeF] @@ -357,12 +357,6 @@ validateSettings User{..} = do userDisplayName == userDisplayName' || -- unchanged or valid (invalid displayNames delivered by LDAP are preserved) validDisplayName userTitle userFirstName userSurname userDisplayName' - userPinPassword' <- use _stgPinPassword - let pinBad = validCmdArgument userPinPassword' - pinMinChar = 5 - whenIsJust pinBad (tellValidationError . MsgPDFPasswordInvalid) -- used as CMD argument for pdftk - guardValidation (MsgPDFPasswordTooShort pinMinChar) $ pinMinChar <= length userPinPassword' - userPostAddress' <- use _stgPostAddress let postalNotSet = isNothing userPostAddress' postalIsValid = validPostAddress userPostAddress' @@ -371,7 +365,14 @@ validateSettings User{..} = do userPrefersPostal' <- use _stgPrefersPostal guardValidation MsgUserPrefersPostalInvalid $ - not $ userPrefersPostal' && postalNotSet + not $ userPrefersPostal' && postalNotSet + + userPinPassword' <- use _stgPinPassword + let pinBad = validCmdArgument =<< userPinPassword' + pinMinChar = 5 + pinLength = maybe 0 length userPinPassword' + whenIsJust pinBad (tellValidationError . MsgPDFPasswordInvalid) -- used as CMD argument for pdftk + guardValidation (MsgPDFPasswordTooShort pinMinChar) $ userPrefersPostal' || pinMinChar <= pinLength data ButtonResetTokens = BtnResetTokens @@ -429,7 +430,7 @@ serveProfileR (uid, user@User{..}) = do , stgNotificationSettings = userNotificationSettings , stgWarningDays = userWarningDays , stgShowSex = userShowSex - , stgPinPassword = fromMaybe "" userPinPassword + , stgPinPassword = userPinPassword , stgPostAddress = userPostAddress , stgPrefersPostal = userPrefersPostal , stgExamOfficeSettings = ExamOfficeSettings @@ -457,7 +458,7 @@ serveProfileR (uid, user@User{..}) = do , UserWarningDays =. stgWarningDays , UserNotificationSettings =. stgNotificationSettings , UserShowSex =. stgShowSex - , UserPinPassword =. Just stgPinPassword + , UserPinPassword =. stgPinPassword , UserPostAddress =. stgPostAddress , UserPrefersPostal =. stgPrefersPostal , UserExamOfficeGetSynced =. (stgExamOfficeSettings & eosettingsGetSynced)