haskell-servant / servant-auth

160 stars 73 forks source link

Servant.Auth.Swagger: instances for Tokens? #180

Open cdupont opened 3 years ago

cdupont commented 3 years ago

I'm using Servant.Auth.Swagger, which is very useful to get authorization displayed in Swagger. However, in my API I also need to return JWTs:

type TokenAPI = ...   :> Post '[PlainText, JSON] Token

So I defined:

--- Wrapper for JWTs.
newtype Token = Token {unToken :: ByteString} deriving (Eq, Show, Generic)

instance ToJSON Token where
  toJSON (Token t) = String $ convertString t

instance ToSchema Token where
  declareNamedSchema _ = pure (NamedSchema (Just "Token") binarySchema)

instance MimeRender PlainText Token where
  mimeRender _ (Token tok) = tok

I'm wondering is this is already somewhere, or if this could be integrated in Servant.Auth.Swagger.