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)
0 commit comments