From a240f314cbf97c93e6990c06eaac3387ffafe90d Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Fri, 11 Feb 2022 19:20:15 +0100 Subject: [PATCH] chore(guessuser): allow resolving user by eppn --- src/Handler/Utils/Users.hs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Handler/Utils/Users.hs b/src/Handler/Utils/Users.hs index f851d4fc9..06b3c80ac 100644 --- a/src/Handler/Utils/Users.hs +++ b/src/Handler/Utils/Users.hs @@ -45,10 +45,16 @@ computeUserAuthenticationDigest = hashlazy . JSON.encode data GuessUserInfo - = GuessUserMatrikelnummer { guessUserMatrikelnummer :: UserMatriculation } - | GuessUserDisplayName { guessUserDisplayName :: UserDisplayName } - | GuessUserSurname { guessUserSurname :: UserSurname } - | GuessUserFirstName { guessUserFirstName :: UserFirstName } + = GuessUserMatrikelnummer + { guessUserMatrikelnummer :: UserMatriculation } + | GuessUserEduPersonPrincipalName + { guessUserEduPersonPrincipalName :: UserEduPersonPrincipalName } + | GuessUserDisplayName + { guessUserDisplayName :: UserDisplayName } + | GuessUserSurname + { guessUserSurname :: UserSurname } + | GuessUserFirstName + { guessUserFirstName :: UserFirstName } deriving (Eq, Ord, Read, Show, Generic, Typeable) instance Binary GuessUserInfo @@ -93,10 +99,11 @@ guessUser (((Set.toList . toNullable) <$>) . Set.toList . dnfTerms -> criteria) containsAsSet x y = E.and . map (\y' -> x `E.hasInfix` E.val y') $ asWords y toSql user pl = bool id E.not_ (is _PLNegated pl) $ case pl ^. _plVar of - GuessUserMatrikelnummer userMatriculation' -> user E.^. UserMatrikelnummer E.==. E.val (Just userMatriculation') - GuessUserDisplayName userDisplayName' -> user E.^. UserDisplayName `containsAsSet` userDisplayName' - GuessUserSurname userSurname' -> user E.^. UserSurname `containsAsSet` userSurname' - GuessUserFirstName userFirstName' -> user E.^. UserFirstName `containsAsSet` userFirstName' + GuessUserMatrikelnummer userMatriculation' -> user E.^. UserMatrikelnummer E.==. E.val (Just userMatriculation') + GuessUserEduPersonPrincipalName userEPPN' -> user E.^. UserLdapPrimaryKey E.==. E.val (Just userEPPN') + GuessUserDisplayName userDisplayName' -> user E.^. UserDisplayName `containsAsSet` userDisplayName' + GuessUserSurname userSurname' -> user E.^. UserSurname `containsAsSet` userSurname' + GuessUserFirstName userFirstName' -> user E.^. UserFirstName `containsAsSet` userFirstName' go didLdap = do let retrieveUsers = E.select . E.from $ \user -> do