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

Monax.Auth.Servant

Description

 
Synopsis

Documentation

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.2.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.2.0.0-inplace" 'False) (C1 ('MetaCons "NotRequired" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Required" 'PrefixI 'False) (U1 :: Type -> Type))

data family SessionCookie :: 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 r b :> api :: Type) Source # 
Instance details

Defined in Monax.Auth.Servant

Methods

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

(HasContextEntry context (Sessions SessionID a), HasContextEntry context Cipher, HasServer api context) => HasServer (SessionCookie 'NotRequired a :> api :: Type) context Source # 
Instance details

Defined in Monax.Auth.Servant

Methods

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

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

(HasContextEntry context (Sessions SessionID a), HasContextEntry context Cipher, HasContextEntry context AuthenticationRedirectURL, HasServer api context) => HasServer (SessionCookie 'Required a :> api :: Type) context Source # 
Instance details

Defined in Monax.Auth.Servant

Methods

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

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

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

Defined in Monax.Auth.Servant

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

Defined in Monax.Auth.Servant

type ServerT (SessionCookie 'NotRequired a :> api :: Type) m = Maybe (SessionID, a) -> ServerT api m
type ServerT (SessionCookie 'Required a :> api :: Type) m Source # 
Instance details

Defined in Monax.Auth.Servant

type ServerT (SessionCookie 'Required a :> api :: Type) m = (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.2.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.2.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.2.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.2.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.2.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.2.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.