New sharer ident checked for CI-uniqueness

This commit is contained in:
fr33domlover 2016-05-22 21:24:55 +00:00
parent 1a3f976a81
commit a0d42f9159

View file

@ -19,9 +19,11 @@ module Vervis.Field.Person
)
where
import Vervis.Import
import Vervis.Import hiding ((==.))
import Data.Char (isDigit)
import Database.Esqueleto
import Data.Char.Local (isAsciiLetter)
checkLoginTemplate :: Field Handler Text -> Field Handler Text
@ -40,13 +42,12 @@ checkLoginTemplate =
in checkBool ok msg
checkLoginUnique :: Field Handler Text -> Field Handler Text
checkLoginUnique = checkM $ \ login -> runDB $ do
let sharer = Sharer
{ sharerIdent = login
, sharerName = Nothing
}
mus <- checkUnique sharer
return $ if isNothing mus
checkLoginUnique = checkM $ \ login -> do
sames <- runDB $ select $ from $ \ sharer -> do
where_ $ lower_ (sharer ^. SharerIdent) ==. lower_ (val login)
limit 1
return ()
return $ if null sames
then Right login
else Left ("This username is already in use" :: Text)
@ -63,7 +64,7 @@ checkPassLength =
\alternative, such as a client TLS certificate, that can work \
\somewhat like SSH and GPG keys."
minlen = 8
in checkBool ((>= minlen) . length) msg
in checkBool ((>= minlen) . length) msg
passConfirmField :: Field Handler Text
passConfirmField = Field