]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Authorization.hs
Authorization / DefaultPage
[Lucu.git] / Network / HTTP / Lucu / Authorization.hs
index 6472fb4e6ce6f5668a35382dc20d13defbb32a82..64183ff1c86ef1317efd3352d94ff051fa6cd429 100644 (file)
@@ -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"