Allow using aeson 1 (lax with min-bounds)
This commit is contained in:
parent
62033db535
commit
05ef0dd1d3
9 changed files with 23 additions and 15 deletions
|
@ -64,7 +64,7 @@ test-suite spec
|
||||||
build-depends:
|
build-depends:
|
||||||
hspec >= 2.5.5 && < 2.9
|
hspec >= 2.5.5 && < 2.9
|
||||||
, QuickCheck >= 2.11.3 && < 2.15
|
, QuickCheck >= 2.11.3 && < 2.15
|
||||||
, aeson >= 2.0.1.0 && < 3
|
, aeson >= 1.3.1.1 && < 3
|
||||||
, bytestring >= 0.10.6.0 && < 0.11
|
, bytestring >= 0.10.6.0 && < 0.11
|
||||||
, http-client >= 0.5.13.1 && < 0.8
|
, http-client >= 0.5.13.1 && < 0.8
|
||||||
, http-types >= 0.12.2 && < 0.13
|
, http-types >= 0.12.2 && < 0.13
|
||||||
|
@ -74,7 +74,7 @@ test-suite spec
|
||||||
, transformers >= 0.4.2.0 && < 0.6
|
, transformers >= 0.4.2.0 && < 0.6
|
||||||
, wai >= 3.2.1.2 && < 3.3
|
, wai >= 3.2.1.2 && < 3.3
|
||||||
, warp >= 3.2.25 && < 3.4
|
, warp >= 3.2.25 && < 3.4
|
||||||
, jose >= 0.9 && < 0.10
|
, jose >= 0.7.0.0 && < 0.10
|
||||||
other-modules:
|
other-modules:
|
||||||
Servant.Auth.ClientSpec
|
Servant.Auth.ClientSpec
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
|
@ -32,7 +32,7 @@ library
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.10 && < 4.16
|
base >= 4.10 && < 4.16
|
||||||
, aeson >= 2.0.1.0 && < 3
|
, aeson >= 1.0.0.1 && < 3
|
||||||
, base64-bytestring >= 1.0.0.1 && < 2
|
, base64-bytestring >= 1.0.0.1 && < 2
|
||||||
, blaze-builder >= 0.4.1.0 && < 0.5
|
, blaze-builder >= 0.4.1.0 && < 0.5
|
||||||
, bytestring >= 0.10.6.0 && < 0.11
|
, bytestring >= 0.10.6.0 && < 0.11
|
||||||
|
@ -41,7 +41,7 @@ library
|
||||||
, data-default-class >= 0.1.2.0 && < 0.2
|
, data-default-class >= 0.1.2.0 && < 0.2
|
||||||
, entropy >= 0.4.1.3 && < 0.5
|
, entropy >= 0.4.1.3 && < 0.5
|
||||||
, http-types >= 0.12.2 && < 0.13
|
, http-types >= 0.12.2 && < 0.13
|
||||||
, jose >= 0.9 && < 0.10
|
, jose >= 0.7.0.0 && < 0.10
|
||||||
, lens >= 4.16.1 && < 5.1
|
, lens >= 4.16.1 && < 5.1
|
||||||
, memory >= 0.14.16 && < 0.17
|
, memory >= 0.14.16 && < 0.17
|
||||||
, monad-time >= 0.3.1.0 && < 0.4
|
, monad-time >= 0.3.1.0 && < 0.4
|
||||||
|
|
|
@ -35,11 +35,12 @@ library
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.10 && < 4.16
|
base >= 4.10 && < 4.16
|
||||||
, containers >= 0.6 && < 0.7
|
, containers >= 0.6 && < 0.7
|
||||||
, aeson >= 2.0.1.0 && < 3
|
, aeson >= 1.3.1.1 && < 3
|
||||||
, jose >= 0.9 && < 0.10
|
, jose >= 0.7.0.0 && < 0.10
|
||||||
, lens >= 4.16.1 && < 5.1
|
, lens >= 4.16.1 && < 5.1
|
||||||
, servant >= 0.15 && < 0.19
|
, servant >= 0.15 && < 0.19
|
||||||
, text >= 1.2.3.0 && < 1.3
|
, text >= 1.2.3.0 && < 1.3
|
||||||
|
, unordered-containers >= 0.2.9.0 && < 0.3
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
Servant.Auth
|
Servant.Auth
|
||||||
Servant.Auth.JWT
|
Servant.Auth.JWT
|
||||||
|
|
|
@ -1,10 +1,17 @@
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
|
||||||
module Servant.Auth.JWT where
|
module Servant.Auth.JWT where
|
||||||
|
|
||||||
import Control.Lens ((^.))
|
import Control.Lens ((^.))
|
||||||
import qualified Crypto.JWT as Jose
|
import qualified Crypto.JWT as Jose
|
||||||
import Data.Aeson (FromJSON, Result (..), ToJSON, fromJSON,
|
import Data.Aeson (FromJSON, Result (..), ToJSON, fromJSON,
|
||||||
toJSON)
|
toJSON)
|
||||||
import qualified Data.Map as Map
|
#if MIN_VERSION_aeson(2,0,0)
|
||||||
|
import qualified Data.Map as KM
|
||||||
|
#else
|
||||||
|
import qualified Data.HashMap.Strict as KM
|
||||||
|
#endif
|
||||||
|
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +24,7 @@ import qualified Data.Text as T
|
||||||
class FromJWT a where
|
class FromJWT a where
|
||||||
decodeJWT :: Jose.ClaimsSet -> Either T.Text a
|
decodeJWT :: Jose.ClaimsSet -> Either T.Text a
|
||||||
default decodeJWT :: FromJSON a => Jose.ClaimsSet -> Either T.Text a
|
default decodeJWT :: FromJSON a => Jose.ClaimsSet -> Either T.Text a
|
||||||
decodeJWT m = case Map.lookup "dat" (m ^. Jose.unregisteredClaims) of
|
decodeJWT m = case KM.lookup "dat" (m ^. Jose.unregisteredClaims) of
|
||||||
Nothing -> Left "Missing 'dat' claim"
|
Nothing -> Left "Missing 'dat' claim"
|
||||||
Just v -> case fromJSON v of
|
Just v -> case fromJSON v of
|
||||||
Error e -> Left $ T.pack e
|
Error e -> Left $ T.pack e
|
||||||
|
|
|
@ -70,7 +70,7 @@ library
|
||||||
-- Other dependencies: Lower bound around what is in the latest Stackage LTS.
|
-- Other dependencies: Lower bound around what is in the latest Stackage LTS.
|
||||||
-- Here can be exceptions if we really need features from the newer versions.
|
-- Here can be exceptions if we really need features from the newer versions.
|
||||||
build-depends:
|
build-depends:
|
||||||
aeson >= 2.0.1.0 && < 3
|
aeson >= 1.4.1.0 && < 3
|
||||||
, base-compat >= 0.10.5 && < 0.12
|
, base-compat >= 0.10.5 && < 0.12
|
||||||
, base64-bytestring >= 1.0.0.1 && < 1.3
|
, base64-bytestring >= 1.0.0.1 && < 1.3
|
||||||
, exceptions >= 0.10.0 && < 0.11
|
, exceptions >= 0.10.0 && < 0.11
|
||||||
|
|
|
@ -52,7 +52,7 @@ library
|
||||||
-- Other dependencies: Lower bound around what is in the latest Stackage LTS.
|
-- Other dependencies: Lower bound around what is in the latest Stackage LTS.
|
||||||
-- Here can be exceptions if we really need features from the newer versions.
|
-- Here can be exceptions if we really need features from the newer versions.
|
||||||
build-depends:
|
build-depends:
|
||||||
aeson >= 2.0.1.0 && < 3
|
aeson >= 1.4.1.0 && < 3
|
||||||
, aeson-pretty >= 0.8.5 && < 0.9
|
, aeson-pretty >= 0.8.5 && < 0.9
|
||||||
, base-compat >= 0.10.5 && < 0.12
|
, base-compat >= 0.10.5 && < 0.12
|
||||||
, case-insensitive >= 1.2.0.11 && < 1.3
|
, case-insensitive >= 1.2.0.11 && < 1.3
|
||||||
|
|
|
@ -114,7 +114,7 @@ executable greet
|
||||||
, text
|
, text
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
aeson >= 2.0.1.0 && < 3
|
aeson >= 1.4.1.0 && < 3
|
||||||
, warp >= 3.2.25 && < 3.4
|
, warp >= 3.2.25 && < 3.4
|
||||||
|
|
||||||
test-suite spec
|
test-suite spec
|
||||||
|
@ -157,7 +157,7 @@ test-suite spec
|
||||||
|
|
||||||
-- Additional dependencies
|
-- Additional dependencies
|
||||||
build-depends:
|
build-depends:
|
||||||
aeson >= 2.0.1.0 && < 3
|
aeson >= 1.4.1.0 && < 3
|
||||||
, directory >= 1.3.0.0 && < 1.4
|
, directory >= 1.3.0.0 && < 1.4
|
||||||
, hspec >= 2.6.0 && < 2.9
|
, hspec >= 2.6.0 && < 2.9
|
||||||
, hspec-wai >= 0.10.1 && < 0.12
|
, hspec-wai >= 0.10.1 && < 0.12
|
||||||
|
|
|
@ -68,7 +68,7 @@ library
|
||||||
Servant.Swagger.Internal.TypeLevel.Every
|
Servant.Swagger.Internal.TypeLevel.Every
|
||||||
Servant.Swagger.Internal.TypeLevel.TMap
|
Servant.Swagger.Internal.TypeLevel.TMap
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
build-depends: aeson >=2.0.1.0 && <3
|
build-depends: aeson >=1.4.2.0 && <3
|
||||||
, aeson-pretty >=0.8.7 && <0.9
|
, aeson-pretty >=0.8.7 && <0.9
|
||||||
, base >=4.9.1.0 && <5
|
, base >=4.9.1.0 && <5
|
||||||
, base-compat >=0.10.5 && <0.12
|
, base-compat >=0.10.5 && <0.12
|
||||||
|
@ -108,7 +108,7 @@ test-suite spec
|
||||||
build-tool-depends: hspec-discover:hspec-discover >=2.6.0 && <2.8
|
build-tool-depends: hspec-discover:hspec-discover >=2.6.0 && <2.8
|
||||||
build-depends: base
|
build-depends: base
|
||||||
, base-compat
|
, base-compat
|
||||||
, aeson >=2.0.1.0 && <3
|
, aeson >=1.4.2.0 && <3
|
||||||
, hspec >=2.6.0 && <2.8
|
, hspec >=2.6.0 && <2.8
|
||||||
, QuickCheck
|
, QuickCheck
|
||||||
, lens
|
, lens
|
||||||
|
|
|
@ -98,7 +98,7 @@ library
|
||||||
-- Here can be exceptions if we really need features from the newer versions.
|
-- Here can be exceptions if we really need features from the newer versions.
|
||||||
build-depends:
|
build-depends:
|
||||||
base-compat >= 0.10.5 && < 0.12
|
base-compat >= 0.10.5 && < 0.12
|
||||||
, aeson >= 2.0.1.0 && < 3
|
, aeson >= 1.4.1.0 && < 3
|
||||||
, attoparsec >= 0.13.2.2 && < 0.15
|
, attoparsec >= 0.13.2.2 && < 0.15
|
||||||
, bifunctors >= 5.5.3 && < 5.6
|
, bifunctors >= 5.5.3 && < 5.6
|
||||||
, case-insensitive >= 1.2.0.11 && < 1.3
|
, case-insensitive >= 1.2.0.11 && < 1.3
|
||||||
|
|
Loading…
Reference in a new issue