X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FAuthorization.hs;h=64183ff1c86ef1317efd3352d94ff051fa6cd429;hp=6472fb4e6ce6f5668a35382dc20d13defbb32a82;hb=c7a8bc012b1b70353d567bfab86fc6e849d60c20;hpb=4200b71ce2d0b25a0e6c5df4e0230215c070858f diff --git a/Network/HTTP/Lucu/Authorization.hs b/Network/HTTP/Lucu/Authorization.hs index 6472fb4..64183ff 100644 --- a/Network/HTTP/Lucu/Authorization.hs +++ b/Network/HTTP/Lucu/Authorization.hs @@ -21,7 +21,6 @@ import qualified Data.Ascii as A import Data.Attoparsec.Char8 import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Char8 as C8 -import Data.Maybe import Data.Monoid.Unicode import Network.HTTP.Lucu.Parser.Http import Network.HTTP.Lucu.Utils @@ -69,10 +68,14 @@ authCredentialP | C8.null cPassword → fail "no colons in the basic auth credential" | otherwise - → let u = fromJust $ A.fromByteString user - p = fromJust $ A.fromByteString (C8.tail cPassword) - in - return (BasicAuthCredential u p) + → do u ← asc user + p ← asc (C8.tail cPassword) + return (BasicAuthCredential u p) where base64 ∷ Char → Bool base64 = inClass "a-zA-Z0-9+/=" + + asc ∷ C8.ByteString → Parser Ascii + asc bs = case A.fromByteString bs of + Just as → return as + Nothing → fail "Non-ascii character in auth credential"