From 130140b60d60e04c58d6c9386e843d063dada30c Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Fri, 6 Dec 2024 12:41:18 +0100 Subject: [PATCH] fix(form): knownUserField not working as intended (WIP) --- src/Handler/Utils/Form.hs | 12 ++++++------ src/Model/Migration/Definitions.hs | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 9af3f4d9a..9c7f62d93 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -1980,9 +1980,9 @@ knownUserField onlySuggested suggestions = Field{..} Right (CI.mk . decodeUtf8 . Email.toByteString -> email) -> do dbRes <- liftHandler $ runDBRead $ E.select $ E.distinct $ do user <- lookupExpr' - E.where_ $ E.val email E.==. user E.^. UserIdent -- UserIdent is unique - E.||. E.val email E.==. user E.^. UserEmail -- UserEmail is unique - E.||. ( E.val email E.==. user E.^. UserDisplayEmail + E.where_ $ E.val email `E.ciEq` user E.^. UserIdent -- UserIdent is unique + E.||. E.val email `E.ciEq` user E.^. UserEmail -- UserEmail is unique + E.||. ( E.val email `E.ciEq` user E.^. UserDisplayEmail E.&&. uniqueCI user UserDisplayEmail -- ensure uniqueness ) E.limit 3 -- we need a single answer only, so we optimize the query to stop at multiple answers @@ -2013,9 +2013,9 @@ knownUserField onlySuggested suggestions = Field{..} uniqueCI user field | Just lookupExpr' <- lookupExpr = E.not_ . E.exists $ do user' <- lookupExpr' E.where_ $ user' E.^. UserId E.!=. user E.^. UserId - E.&&. ( user' E.^. UserIdent E.==. user E.^. field - E.||. user' E.^. UserEmail E.==. user E.^. field - E.||. user' E.^. UserDisplayEmail E.==. user E.^. field + E.&&. ( user' E.^. UserIdent `E.ciEq` user E.^. field + E.||. user' E.^. UserEmail `E.ciEq` user E.^. field + E.||. user' E.^. UserDisplayEmail `E.ciEq` user E.^. field ) uniqueCI _ _ = E.true diff --git a/src/Model/Migration/Definitions.hs b/src/Model/Migration/Definitions.hs index 8643802ad..22c0f4e66 100644 --- a/src/Model/Migration/Definitions.hs +++ b/src/Model/Migration/Definitions.hs @@ -81,8 +81,8 @@ migrateManual = do , ("user_lower_display_email", "CREATE INDEX user_lower_display_email ON \"user\" (lower(display_email))" ) , ("user_lower_email", "CREATE INDEX user_lower_email ON \"user\" (lower(email))" ) , ("user_lower_ident", "CREATE INDEX user_lower_ident ON \"user\" (lower(ident))" ) - , ("user_company_personal_number", "CREATE INDEX user_company_personal_number ON \"user\" (company_personal_number))" ) - , ("user_matrikelnummer", "CREATE INDEX user_matrikelnummer ON \"user\" (matrikelnummer))" ) + , ("user_company_personal_number", "CREATE INDEX user_company_personal_number ON \"user\" (company_personal_number)" ) + , ("user_matrikelnummer", "CREATE INDEX user_matrikelnummer ON \"user\" (matrikelnummer)" ) , ("submission_sheet", "CREATE INDEX submission_sheet ON submission (sheet)" ) , ("submission_edit_submission", "CREATE INDEX submission_edit_submission ON submission_edit (submission)" ) , ("user_ldap_primary_key", "CREATE INDEX user_ldap_primary_key ON \"user\" (ldap_primary_key)" )