| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Web.Hyperbole.Effect.Session
Synopsis
- class Session a where
- sessionKey :: Key
- cookiePath :: Maybe Path
- toCookie :: a -> CookieValue
- parseCookie :: CookieValue -> Either String a
- session :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => Eff es a
- lookupSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Eff es (Maybe a)
- saveSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => a -> Eff es ()
- modifySession :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => (a -> a) -> Eff es a
- modifySession_ :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => (a -> a) -> Eff es ()
- deleteSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Eff es ()
- parseSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Key -> CookieValue -> Eff es a
- setCookie :: forall a (es :: [Effect]). (ToParam a, Hyperbole :> es) => Cookie -> Eff es ()
- modifyCookies :: forall (es :: [Effect]). Hyperbole :> es => (Cookies -> Cookies) -> Eff es ()
- sessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies
- clientSessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies
- requestSessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies
- sessionCookie :: Session a => a -> Cookie
- genericTypeName :: (Generic a, GDatatypeName (Rep a)) => Text
- class GDatatypeName (f :: k -> Type) where
- gDatatypeName :: forall (p :: k). f p -> Text
Documentation
class Session a where Source #
Configure a data type to persist in the session as a cookie. These are type-indexed, so only one of each can exist in the session
#EMBED ExampleDocsSessions.hs data Preferences #EMBED ExampleDocsSessions.hs instance Default Preferences
Minimal complete definition
Nothing
Methods
sessionKey :: Key Source #
Unique key for this Session Type. Defaults to the datatypeName
default sessionKey :: (Generic a, GDatatypeName (Rep a)) => Key Source #
cookiePath :: Maybe Path Source #
By default Sessions are persisted only to the current page. Set to `Just "/"` to make an instance available application-wide
default cookiePath :: Maybe Path Source #
toCookie :: a -> CookieValue Source #
Encode type to a a cookie value
default toCookie :: ToEncoded a => a -> CookieValue Source #
parseCookie :: CookieValue -> Either String a Source #
Decode from a cookie value. Defaults to FromJSON
default parseCookie :: FromEncoded a => CookieValue -> Either String a Source #
Instances
| Session AuthFlow Source # | |
Defined in Web.Hyperbole.Effect.OAuth2 Methods sessionKey :: Key Source # cookiePath :: Maybe Path Source # toCookie :: AuthFlow -> CookieValue Source # parseCookie :: CookieValue -> Either String AuthFlow Source # | |
| Session Authenticated Source # | |
Defined in Web.Hyperbole.Effect.OAuth2 Methods sessionKey :: Key Source # cookiePath :: Maybe Path Source # toCookie :: Authenticated -> CookieValue Source # parseCookie :: CookieValue -> Either String Authenticated Source # | |
session :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => Eff es a Source #
Load data from a browser cookie. If it doesn't exist, the Default instance is used
#EMBED ExampleDocsSessions.hs data Preferences #EMBED ExampleDocsSessions.hs instance Default Preferences #EMBED ExampleDocsSessions.hs page
lookupSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Eff es (Maybe a) Source #
Return a session if it exists
saveSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => a -> Eff es () Source #
Persist datatypes in browser cookies
#EMBED ExampleDocsSessions.hs data Preferences #EMBED ExampleDocsSessions.hs instance Default Preferences #EMBED ExampleDocsSessions.hs instance HyperView Content
modifySession :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => (a -> a) -> Eff es a Source #
modifySession_ :: forall a (es :: [Effect]). (Session a, Default a, Hyperbole :> es) => (a -> a) -> Eff es () Source #
deleteSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Eff es () Source #
Remove a single Session from the browser cookies
parseSession :: forall a (es :: [Effect]). (Session a, Hyperbole :> es) => Key -> CookieValue -> Eff es a Source #
setCookie :: forall a (es :: [Effect]). (ToParam a, Hyperbole :> es) => Cookie -> Eff es () Source #
save a single datatype to a specific key in the session
modifyCookies :: forall (es :: [Effect]). Hyperbole :> es => (Cookies -> Cookies) -> Eff es () Source #
Modify the client cookies
sessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies Source #
Return all the cookies, both those sent in the request and others added by the page
clientSessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies Source #
Return the session from the Client cookies
requestSessionCookies :: forall (es :: [Effect]). Hyperbole :> es => Eff es Cookies Source #
Return the session from the Request cookies
sessionCookie :: Session a => a -> Cookie Source #
genericTypeName :: (Generic a, GDatatypeName (Rep a)) => Text Source #
generic datatype name
class GDatatypeName (f :: k -> Type) where Source #
Methods
gDatatypeName :: forall (p :: k). f p -> Text Source #
Instances
| Datatype d => GDatatypeName (M1 D d f :: k -> Type) Source # | |
Defined in Web.Hyperbole.Effect.Session | |