chore(jobs): use userLookupAndUpsert for synchronise user job

This commit is contained in:
Sarah Vaupel 2024-03-08 09:56:27 +01:00
parent 2480efc345
commit 969cc4df63

View File

@ -9,11 +9,10 @@ module Jobs.Handler.SynchroniseUser
import Import
import qualified Data.Conduit.List as C
import Foundation.Yesod.Auth (userLookupAndUpsert)
import Auth.LDAP
import Auth.OAuth2
import Foundation.Yesod.Auth (UserConversionException, upsertUser)
import qualified Data.CaseInsensitive as CI
import qualified Data.Conduit.List as C
import Jobs.Queue
@ -43,27 +42,7 @@ dispatchJobSynchroniseUsers numIterations epoch iteration
return $ JobSynchroniseUser userId
dispatchJobSynchroniseUser :: UserId -> JobHandler UniWorX
dispatchJobSynchroniseUser jUser = JobHandlerException $ do
userSourceConf <- getsYesod $ view _appUserAuthConf
case userSourceConf of
UserAuthConfSingleSource (AuthSourceConfLdap _ldapConf) ->
runDB . void . runMaybeT . handleExc $ do
ldapPool@(upsertUserLdapConf,_) <- MaybeT . getsYesod $ view _appLdapPool
user@User{userIdent = upsertUserIdent} <- MaybeT $ get jUser
$logInfoS "SynchroniseUser" [st|Synchronising #{upsertUserIdent} with LDAP|]
-- reTestAfter <- getsYesod $ view _appUserdbRetestFailover
-- ldapAttrs <- MaybeT $ campusUserReTest' ldapConf ((>= reTestAfter) . realToFrac) FailoverUnlimited user
upsertUserLdapData <- MaybeT $ ldapUser' ldapPool user
void . lift $ upsertUser UpsertUserSync{..} UpsertUserDataLdap{..}
UserAuthConfSingleSource (AuthSourceConfAzureAdV2 upsertUserAzureConf) ->
runDB . void . runMaybeT . handleExc $ do
user@User{userIdent = upsertUserIdent} <- MaybeT $ get jUser
$logInfoS "SynchroniseUser" [st|Synchronising #{upsertUserIdent} with Azure|]
upsertUserAzureData <- MaybeT $ azureUser' upsertUserAzureConf user
void . lift $ upsertUser UpsertUserSync{..} UpsertUserDataAzure{..}
where
handleExc :: MaybeT DB a -> MaybeT DB a
handleExc
= catchMPlus (Proxy @AzureUserException)
. catchMPlus (Proxy @LdapUserException)
. catchMPlus (Proxy @UserConversionException)
dispatchJobSynchroniseUser jUser = JobHandlerException . runDB $ do
User{userIdent = upsertUserIdent} <- getJust jUser
$logInfoS "SynchroniseUser" [st|Synchronising #{upsertUserIdent} with external sources|]
void $ userLookupAndUpsert (CI.original upsertUserIdent) UpsertUserSync{..}