monax-auth-api-0.4.0.0: Servant API types
LicenseAGPL-3.0-or-later
Maintainermonawasensei@gmail.com
Safe HaskellNone
LanguageGHC2024

Monax.Auth.Servant

Description

 
Synopsis

Documentation

class KnownSessionRequired (r :: SessionRequired) where Source #

Singleton class for SessionRequired for static dispatch of types like `ServerT (SessionRequired i r a :> api) m`

Associated Types

type FromSessionRequirement (r :: SessionRequired) a Source #

Methods

decideRequirement :: (r ~ 'NotRequired => a) -> (r ~ 'Required => a) -> a Source #

Branch on a known value.

Instances

Instances details
KnownSessionRequired 'NotRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type FromSessionRequirement 'NotRequired a 
Instance details

Defined in Monax.Auth.Servant

KnownSessionRequired 'Required Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type FromSessionRequirement 'Required a 
Instance details

Defined in Monax.Auth.Servant

Methods

decideRequirement :: ('Required ~ 'NotRequired => a) -> ('Required ~ 'Required => a) -> a Source #

fromSessionRequirement :: forall (r :: SessionRequired) a b. KnownSessionRequired r => Proxy a -> (r ~ 'NotRequired => FromSessionRequirement r a -> b) -> (r ~ 'Required => FromSessionRequirement r a -> b) -> FromSessionRequirement r a -> b Source #

Case analysis using a static type of kind SessionRequired.

data SessionRequired Source #

Marks an endpoint as requiring a valid session to proceed.

Constructors

NotRequired 
Required 

Instances

Instances details
Bounded SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Enum SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Generic SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type Rep SessionRequired 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionRequired = D1 ('MetaData "SessionRequired" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'False) (C1 ('MetaCons "NotRequired" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Required" 'PrefixI 'False) (U1 :: Type -> Type))
Show SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Eq SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

Ord SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionRequired Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionRequired = D1 ('MetaData "SessionRequired" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'False) (C1 ('MetaCons "NotRequired" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Required" 'PrefixI 'False) (U1 :: Type -> Type))

data family SessionCookie :: k -> SessionRequired -> Type -> Type Source #

Reads a session token from the request cookies, and depending on the SessionRequired value, will proceed with an optional or required value for the user's session state.

Instances

Instances details
HasLink api => HasLink (SessionCookie i r b :> api :: Type) Source # 
Instance details

Defined in Monax.Auth.Servant

Methods

toLink :: (Link -> a) -> Proxy (SessionCookie i r b :> api) -> Link -> MkLink (SessionCookie i r b :> api) a #

(KnownSessionRequired r, HasContextEntry context (Tagged i (Sessions SessionID a)), HasContextEntry context (Tagged i Cipher), HasContextEntry context (Tagged i AuthenticationRedirectURL), HasServer api context) => HasServer (SessionCookie i r a :> api :: Type) context Source # 
Instance details

Defined in Monax.Auth.Servant

Methods

route :: Proxy (SessionCookie i r a :> api) -> Context context -> Delayed env (Server (SessionCookie i r a :> api)) -> Router env #

hoistServerWithContext :: Proxy (SessionCookie i r a :> api) -> Proxy context -> (forall x. m x -> n x) -> ServerT (SessionCookie i r a :> api) m -> ServerT (SessionCookie i r a :> api) n #

type IsElem' e (SessionCookie i r b :> api) Source # 
Instance details

Defined in Monax.Auth.Servant

type IsElem' e (SessionCookie i r b :> api) = IsElem e api
type MkLink (SessionCookie i r b :> api :: Type) a Source # 
Instance details

Defined in Monax.Auth.Servant

type MkLink (SessionCookie i r b :> api :: Type) a = MkLink api a
type ServerT (SessionCookie i r a :> api :: Type) m Source # 
Instance details

Defined in Monax.Auth.Servant

type ServerT (SessionCookie i r a :> api :: Type) m = FromSessionRequirement r (SessionID, a) -> ServerT api m

newtype SessionID Source #

Unique identifier suitable for sessions.

Constructors

SessionID UUID 

Instances

Instances details
Generic SessionID Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type Rep SessionID 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionID = D1 ('MetaData "SessionID" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'True) (C1 ('MetaCons "SessionID" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UUID)))
Show SessionID Source # 
Instance details

Defined in Monax.Auth.Servant

Eq SessionID Source # 
Instance details

Defined in Monax.Auth.Servant

Hashable SessionID Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionID Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep SessionID = D1 ('MetaData "SessionID" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'True) (C1 ('MetaCons "SessionID" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UUID)))

newSessionID :: IO SessionID Source #

Create a new unique SessionID

newtype AuthenticationRedirectURL Source #

A link to somewhere a user can authenticate and be issued a session token.

Instances

Instances details
Monoid AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

Semigroup AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

IsString AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

Generic AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type Rep AuthenticationRedirectURL 
Instance details

Defined in Monax.Auth.Servant

type Rep AuthenticationRedirectURL = D1 ('MetaData "AuthenticationRedirectURL" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'True) (C1 ('MetaCons "AuthenticationRedirectURL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

Eq AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep AuthenticationRedirectURL Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep AuthenticationRedirectURL = D1 ('MetaData "AuthenticationRedirectURL" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'True) (C1 ('MetaCons "AuthenticationRedirectURL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data BasicAuthReqBody Source #

A form with "username" and "password" for a user to authenticate with.

Place in front of a POST endpoint.

type AuthenticateAndIssueToken =
    ReqBody '[FormUrlEncoded] BasicAuthReqBody
      :> Post '[JSON] (Headers '[Header "Set-Cookie" Text] Text)

Constructors

BasicAuthReqBody 

Instances

Instances details
Generic BasicAuthReqBody Source # 
Instance details

Defined in Monax.Auth.Servant

Associated Types

type Rep BasicAuthReqBody 
Instance details

Defined in Monax.Auth.Servant

type Rep BasicAuthReqBody = D1 ('MetaData "BasicAuthReqBody" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'False) (C1 ('MetaCons "BasicAuthReqBody" 'PrefixI 'True) (S1 ('MetaSel ('Just "barbUsername") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Just "barbPassword") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)))
FromForm BasicAuthReqBody Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep BasicAuthReqBody Source # 
Instance details

Defined in Monax.Auth.Servant

type Rep BasicAuthReqBody = D1 ('MetaData "BasicAuthReqBody" "Monax.Auth.Servant" "monax-auth-api-0.4.0.0-inplace" 'False) (C1 ('MetaCons "BasicAuthReqBody" 'PrefixI 'True) (S1 ('MetaSel ('Just "barbUsername") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Just "barbPassword") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)))

makeSetSessionCookie :: AddHeader '[Optional, Strict] "Set-Cookie" Text orig new => Cipher -> SessionID -> Integer -> Text -> IO (orig -> new) Source #

Encrypt a session id and return a function that sets that session id as a cookie in a response.