git.iko.soy/typeable/random-token
on master help sign in
[SSO] Authorization pages (#4800)
39093beNikita
random-token.cabal+3−4
@@ -21,9 +21,8 @@ library
21 , deepseq
21 , deepseq
22 , http-api-data
22 , http-api-data
23 , text
23 , text
24− if !impl(ghcjs)
25− build-depends: cryptonite
24+ , cryptonite
26− , postgresql-simple
25+ , postgresql-simple
27 default-language: Haskell2010
26 default-language: Haskell2010
28 default-extensions: CPP
27 default-extensions: CPP
29 , ConstraintKinds
28 , ConstraintKinds
@@ -101,4 +100,4 @@ test-suite spec
101 , TypeFamilies
100 , TypeFamilies
102 , TypeOperators
101 , TypeOperators
103 , UndecidableInstances
102 , UndecidableInstances
104− , ViewPatterns
103+ , ViewPatterns
src/Random/Token.hs−6
@@ -4,9 +4,7 @@ module Random.Token
4 , tokenToText
4 , tokenToText
5 , asciiToToken
5 , asciiToToken
6 , textToToken
6 , textToToken
7−#ifndef ghcjs_HOST_OS
8 , generateToken
7 , generateToken
9−#endif
10 ) where
8 ) where
11
9
12import Control.DeepSeq
10import Control.DeepSeq
@@ -21,11 +19,9 @@ import Data.Typeable
21import Test.QuickCheck.Arbitrary
19import Test.QuickCheck.Arbitrary
22import Web.HttpApiData
20import Web.HttpApiData
23
21
24−#ifndef ghcjs_HOST_OS
25import Crypto.Random as R
22import Crypto.Random as R
26import Database.PostgreSQL.Simple.FromField
23import Database.PostgreSQL.Simple.FromField
27import Database.PostgreSQL.Simple.ToField
24import Database.PostgreSQL.Simple.ToField
28−#endif
29
25
30-- | 16 bytes lenght random value parametrized by label.
26-- | 16 bytes lenght random value parametrized by label.
31newtype Token (a :: k) = Token ByteString
27newtype Token (a :: k) = Token ByteString
@@ -44,7 +40,6 @@ instance FromJSON (Token a) where
44instance ToJSON (Token a) where
40instance ToJSON (Token a) where
45 toJSON = toJSON . tokenToText
41 toJSON = toJSON . tokenToText
46
42
47−#ifndef ghcjs_HOST_OS
48instance forall a. (Typeable (Token a), Typeable a) => FromField (Token a) where
43instance forall a. (Typeable (Token a), Typeable a) => FromField (Token a) where
49 fromField fld bs = do
44 fromField fld bs = do
50 t <- fromField fld bs
45 t <- fromField fld bs
@@ -57,7 +52,6 @@ instance ToField (Token a) where
57
52
58generateToken :: (MonadRandom m) => m (Token a)
53generateToken :: (MonadRandom m) => m (Token a)
59generateToken = Token <$> R.getRandomBytes 16
54generateToken = Token <$> R.getRandomBytes 16
60−#endif
61
55
62instance FromHttpApiData (Token a) where
56instance FromHttpApiData (Token a) where
63 parseQueryParam = first T.pack . textToToken
57 parseQueryParam = first T.pack . textToToken