@@ -1,18 +1,14 @@
11module Servant.Auth.Server.Internal.JWT where
22
33import Control.Lens
4−import Control.Monad.Except
4+import Control.Monad (MonadPlus(..), guard)
55import Control.Monad.Reader
66import qualified Crypto.JOSE as Jose
77import qualified Crypto.JWT as Jose
8−import Data.Aeson (FromJSON, Result (..), ToJSON, fromJSON,
9− toJSON)
108import Data.ByteArray (constEq)
119import qualified Data.ByteString as BS
1210import qualified Data.ByteString.Lazy as BSL
13−import qualified Data.HashMap.Strict as HM
1411import Data.Maybe (fromMaybe)
15−import qualified Data.Text as T
1612import Data.Time (UTCTime)
1713import Network.Wai (requestHeaders)
1814
@@ -42,7 +38,7 @@ jwtAuthCheck jwtSettings = do
4238-- token expires.
4339makeJWT :: ToJWT a
4440 => a -> JWTSettings -> Maybe UTCTime -> IO (Either Jose.Error BSL.ByteString)
45−makeJWT v cfg expiry = runExceptT $ do
41+makeJWT v cfg expiry = Jose.runJOSE $ do
4642 bestAlg <- Jose.bestJWSAlg $ signingKey cfg
4743 let alg = fromMaybe bestAlg $ jwtAlg cfg
4844 ejwt <- Jose.signClaims (signingKey cfg)
@@ -59,7 +55,7 @@ makeJWT v cfg expiry = runExceptT $ do
5955verifyJWT :: FromJWT a => JWTSettings -> BS.ByteString -> IO (Maybe a)
6056verifyJWT jwtCfg input = do
6157 keys <- validationKeys jwtCfg
62− verifiedJWT <- runExceptT $ do
58+ verifiedJWT <- Jose.runJOSE $ do
6359 unverifiedJWT <- Jose.decodeCompact (BSL.fromStrict input)
6460 Jose.verifyClaims
6561 (jwtSettingsToJwtValidationSettings jwtCfg)