{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE OverloadedStrings #-}
module Web.OIDC.Client.Types
(
ScopeValue
, openId, profile, email, address, phone, offlineAccess
, Scope
, State
, Nonce
, Parameters
, Code
, IssuerLocation
, OpenIdException(..)
, SessionStore (..)
) where
import Control.Exception (Exception)
import Data.ByteString (ByteString)
import Data.Text (Text)
import Data.Typeable (Typeable)
import Jose.Jwt (JwtError)
import Network.HTTP.Client (HttpException)
type IssuerLocation = Text
type ScopeValue = Text
openId, profile, email, address, phone, offlineAccess :: ScopeValue
openId = "openid"
profile = "profile"
email = "email"
address = "address"
phone = "phone"
offlineAccess = "offline_access"
type Scope = [ScopeValue]
type State = ByteString
type Nonce = ByteString
type Parameters = [(ByteString, Maybe ByteString)]
type Code = ByteString
data OpenIdException =
DiscoveryException Text
| InternalHttpException HttpException
| JsonException Text
| UnsecuredJwt ByteString
| JwtExceptoin JwtError
| ValidationException Text
deriving (Show, Typeable)
instance Exception OpenIdException
data SessionStore m = SessionStore
{ sessionStoreGenerate :: m ByteString
, sessionStoreSave :: State -> Nonce -> m ()
, sessionStoreGet :: m (Maybe State, Maybe Nonce)
, sessionStoreDelete :: m ()
}