@@ -5,9 +5,11 @@ module Random.Token
5 , tokenToText
5 , tokenToText
6 , asciiToToken
6 , asciiToToken
7 , textToToken
7 , textToToken
9 , unsafeCoerceToken
8 , unsafeCoerceToken
10 , tokenWithContents
9 , tokenWithContents
13import Control.DeepSeq
15import Control.DeepSeq
@@ -22,9 +24,9 @@ import Data.Typeable
22import Test.QuickCheck.Arbitrary
24import Test.QuickCheck.Arbitrary
23import Web.HttpApiData
25import Web.HttpApiData
25−import Crypto.Random as R
27#ifndef ghcjs_HOST_OS
28#ifndef ghcjs_HOST_OS
29+import Crypto.Random as R
28import Database.PostgreSQL.Simple.FromField
30import Database.PostgreSQL.Simple.FromField
29import Database.PostgreSQL.Simple.ToField
31import Database.PostgreSQL.Simple.ToField
@@ -54,11 +56,12 @@ instance forall a. (Typeable (Token a), Typeable a) => FromField (Token a) where
55instance ToField (Token a) where
57instance ToField (Token a) where
56 toField = toField . tokenToText
58 toField = toField . tokenToText
59generateToken :: (MonadRandom m) => m (Token a)
60generateToken :: (MonadRandom m) => m (Token a)
60generateToken = Token <$> R.getRandomBytes 16
61generateToken = Token <$> R.getRandomBytes 16
62instance FromHttpApiData (Token a) where
65instance FromHttpApiData (Token a) where
63 parseQueryParam = first T.pack . textToToken
66 parseQueryParam = first T.pack . textToToken