From f4e9f2c973f4c3eccda0a7997d25696fbe286e5c Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 16 Oct 2019 11:22:36 +0200 Subject: [PATCH] fix(users): fix broken email fallback --- src/Foundation.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Foundation.hs b/src/Foundation.hs index 83fc689f4..5738dabf9 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -3366,7 +3366,11 @@ upsertCampusUser ldapData Creds{..} = do let userMatrikelnummer' = fold [ v | (k, v) <- ldapData, k == ldapUserMatriculation ] - userEmail' = fold [ v | (k, v) <- ldapData, k' <- toList ldapUserEmail, k' == k ] + userEmail' = fold $ do + k' <- toList ldapUserEmail + (k, v) <- ldapData + guard $ k' == k + return v userDisplayName'' = fold [ v | (k, v) <- ldapData, k == ldapUserDisplayName ] userFirstName' = fold [ v | (k, v) <- ldapData, k == ldapUserFirstName ] userSurname' = fold [ v | (k, v) <- ldapData, k == ldapUserSurname ] @@ -3379,8 +3383,7 @@ upsertCampusUser ldapData Creds{..} = do userLastAuthentication = now <$ guard (not isDummy) userEmail <- if - | bs : _ <- userEmail' - , Right userEmail <- Text.decodeUtf8' bs + | userEmail : _ <- mapMaybe (assertM (elem '@') . either (const Nothing) Just . Text.decodeUtf8') userEmail' -> return $ mk userEmail | otherwise -> throwM CampusUserInvalidEmail