diff --git a/config/settings.yml b/config/settings.yml index bbe83979c..69e757c72 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -83,6 +83,7 @@ health-check-matching-cluster-config-timeout: "_env:HEALTHCHECK_MATCHING_CLUSTER synchronise-ldap-users-within: "_env:SYNCHRONISE_LDAP_WITHIN:1209600" # 14 Tage in Sekunden synchronise-ldap-users-interval: "_env:SYNCHRONISE_LDAP_INTERVAL:3600" # jede Stunde +synchronise-ldap-users-expire: "_env:SYNCHRONISE_LDAP_EXPIRE:15897600" # halbes Jahr in Sekunden synchronise-avs-users-within: "_env:SYNCHRONISE_AVS_WITHIN:5702400" # alle 66 Tage synchronise-avs-users-interval: "_env:SYNCHRONISE_AVS_INTERVAL:21600" # alle 6 Stunden diff --git a/src/Handler/Utils/Avs.hs b/src/Handler/Utils/Avs.hs index f115de106..97adb5cd9 100644 --- a/src/Handler/Utils/Avs.hs +++ b/src/Handler/Utils/Avs.hs @@ -331,6 +331,7 @@ updateAvsUserByADC (AvsDataContact apid newAvsPersonInfo newAvsFirmInfo) = runMa lift $ do -- maybeT no longer needed from here onwards newAvsCardNo <- queryAvsFullCardNo apid -- Nothing os ok here, does not throw now <- liftIO getCurrentTime + mbLdapExpire <- getsYesod $ views appSettings appSynchroniseLdapUsersExpire let oldAvsPersonInfo = userAvsLastPersonInfo usravs -- Nothing is ok here oldAvsFirmInfo = userAvsLastFirmInfo usravs -- Nothing is ok here oldAvsCardNo = userAvsLastCardNo usravs & fmap Just @@ -360,14 +361,21 @@ updateAvsUserByADC (AvsDataContact apid newAvsPersonInfo newAvsFirmInfo) = runMa CheckUpdate UserPostAddress _avsFirmPostAddress -- since company address should now be referenced with UserCompany instead pin_up = mkUpdate' usr newAvsCardNo oldAvsCardNo $ -- Maybe update PDF pin to latest card CheckUpdate UserPinPassword $ to $ fmap avsFullCardNo2pin -- _Just . to avsFullCardNo2pin . re _Just - usr_up1 = eml_up `mcons` (frm_up `mcons` (pin_up `mcons` per_ups)) + ldap_ups = case (userLastLdapSynchronisation usr, mbLdapExpire) of + (Just lastLdapSync, Just ldapExpire) | now > addUTCTime ldapExpire lastLdapSync + -> [ UserCompanyDepartment =. Nothing + , UserCompanyPersonalNumber =. Nothing + ] + _otherwise -> [] + usr_up1 = eml_up `mcons` (frm_up `mcons` (pin_up `mcons` (ldap_ups <> per_ups))) avs_ups = ((UserAvsNoPerson =.) <$> readMay (avsInfoPersonNo newAvsPersonInfo)) `mcons` [ UserAvsLastSynch =. now , UserAvsLastSynchError =. Nothing , UserAvsLastPersonInfo =. Just newAvsPersonInfo , UserAvsLastFirmInfo =. Just newAvsFirmInfo , UserAvsLastCardNo =. newAvsCardNo - ] + ] + -- update company association & supervision Entity{entityKey=newCompanyId} <- upsertAvsCompany newAvsFirmInfo oldAvsFirmInfo oldCompanyEnt <- getAvsCompany `traverseJoin` oldAvsFirmInfo diff --git a/src/Settings.hs b/src/Settings.hs index 45738751e..10e929b65 100644 --- a/src/Settings.hs +++ b/src/Settings.hs @@ -164,6 +164,7 @@ data AppSettings = AppSettings , appSynchroniseLdapUsersWithin :: Maybe NominalDiffTime , appSynchroniseLdapUsersInterval :: NominalDiffTime + , appSynchroniseLdapUsersExpire :: Maybe NominalDiffTime , appSynchroniseAvsUsersWithin :: Maybe NominalDiffTime , appSynchroniseAvsUsersInterval :: NominalDiffTime @@ -703,6 +704,7 @@ instance FromJSON AppSettings where appSynchroniseLdapUsersWithin <- o .:? "synchronise-ldap-users-within" appSynchroniseLdapUsersInterval <- o .: "synchronise-ldap-users-interval" + appSynchroniseLdapUsersExpire <- o .:? "synrchonise-ldap-users-expire" -- time after last synch to delete LDAP sepcific data appSynchroniseAvsUsersWithin <- o .:? "synchronise-avs-users-within" appSynchroniseAvsUsersInterval <- o .: "synchronise-avs-users-interval" diff --git a/templates/adminUser.hamlet b/templates/adminUser.hamlet index e483d6db4..1f51996e0 100644 --- a/templates/adminUser.hamlet +++ b/templates/adminUser.hamlet @@ -20,7 +20,8 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later _{MsgAdminUserAssimilate} ^{assimilateForm} $#
-$#

-$# _{MsgUserAccountDeleteWarning} -$#

-$# ^{modal "Benutzer löschen" (Right deleteWidget)} +$#

+$# _{MsgUserAccountDeleteWarning} +$#
+$#

+$# ^{modal _{MsgBreadcrumbUserDelete} (Right deleteWidget)}