New sharer ident checked for CI-uniqueness
This commit is contained in:
parent
1a3f976a81
commit
a0d42f9159
1 changed files with 10 additions and 9 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue