fixed nextPolicy

This commit is contained in:
Jonathan Lamothe 2018-12-20 22:02:24 -05:00
parent 648e166110
commit bbf80b87ec

View File

@ -44,7 +44,7 @@ module Password (
pwCountUpper, pwCountLower, pwCountDigits, pwCountSpecial
) where
import Control.Lens (makeLenses, over, (^.))
import Control.Lens (makeLenses, over, set, (^.))
import Data.Char (isUpper, isLower, isDigit, isAlphaNum)
import qualified Data.ByteString as B
import qualified Data.Map as M
@ -220,12 +220,17 @@ mkHash = undefined
nextPolicy :: Char -> PWPolicy -> PWPolicy
nextPolicy x p = over pwLength pred $
over lens pred p where
lens
| isUpper x = pwUpper
| isLower x = pwLower
| isDigit x = pwDigits
| otherwise = pwSpecial . traverse
if isUpper x
then dec pwUpper
else if isLower x
then dec pwLower
else if isDigit x
then dec pwDigits
else case p^.pwSpecial of
Nothing -> set pwSpecial (Just (-1)) p
Just x -> set pwSpecial (Just $ pred x) p
where
dec l = over l (max 0 . pred) p
toUTF8 :: String -> B.ByteString
toUTF8 = undefined