Îõ³h$”­Û      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone#$3>?ÀÁÂÄÉÎÔ×Ùehappstack-clientsession' provides the primary interface to get  sessionData, put  sessionData or expire  sessionData.ìThis is a class so you can use newtype deriving to make the functions available in your custom server monad.happstack-clientsessionØ provides an environment in which we can access and update the client-side session state0The inner monad needs to provide an instance of [: so that the cookie value can be read and set. According  must appear outside  ServerPartT not inside it. happstack-clientsession  is like \, except it records if ] was ever called happstack-clientsessionÿWrapper around the sessionData which tracks it state so we can avoid decoding or encoding/sending the cookie when not requiredhappstack-clientsession4Configuration for the session cookie for passing to  or !.happstack-clientsession-Name of the cookie to hold your session data.happstack-clientsessionLifetime of that cookie.happstack-clientsession$Encryption key, usually from one of ,  and .happstack-clientsession cookie domainhappstack-clientsession cookie pathhappstack-clientsession*Only use a session over secure transports.happstack-clientsessionÕOnly use session over HTTP (to prevent it from being stolen via cross-site scripting)happstack-clientsession7Your session type must have an instance for this class.happstack-clientsessionÎAn empty session, i.e. what you get when there is no existing session stored.happstack-clientsession Create a ' using defaults for everything except Ã. You can use record update syntax to override individual fields. ûmain = do key <- getDefaultKey let sessConf = (mkSessionConf key) { sessionCookieLife = oneWeek } simpleHTTP nullConf $ withClientSessionT sessConf handlers where oneWeek = MaxAge $ 60 * 60 * 24 * 7 handlers = msum [...] is currently defined as: ¯mkSessionConf :: Key -> SessionConf mkSessionConf key = SessionConf { sessionCookieName = "Happstack.ClientSession" , sessionCookieLife = Session , sessionKey = key , sessionDomain = "" , sessionPath = "/" , sessionSecure = False , sessionHttpOnly = True } see also: , happstack-clientsession'Transform the inner monad. (similar to ^)The  forall s.4 is to prevent you from modifying the session state.1In theory we want this function to have the type: ÎmapSessionStateT :: (m a -> n b) -> SessionStateT s m a -> SessionStateT s n b9But that can not be done, so this is the next best thing.happstack-clientsessionrun the ) monad and get the result plus the final SessionStatus sessionDataThis function does notú automatically update the cookie if the session has been modified. It is up to you to do that. You probably want to use ! instead. see also: !, happstack-clientsession?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgbchefiefjë4happstack-clientsession-7.3.2-1rlC6STJNl22TMjNCzB4dIHappstack.Server.ClientSessionDataLens,clientsession-0.9.1.2-AbD3ITtiq62Eo8e16NN7N7Web.ClientSession randomKeygetKey getDefaultKeyKeyMonadClientSession getSession putSession expireSessionClientSessionTunClientSessionT SessionStateT SessionStatusUnreadNoChangeModifiedExpired SessionConfsessionCookieNamesessionCookieLife sessionKey sessionDomain sessionPath sessionSecuresessionHttpOnly ClientSession emptySession mkSessionConfmapSessionStateTrunClientSessionTmapClientSessionTliftSessionStateTwithClientSessionT $fSafeCopyKey $fMonadBaseControlbSessionStateT $fMonadTransControlSessionStateT$$fMonadStatesessionDataSessionStateT$fMonoidSessionStateT$fSemigroupSessionStateT$fHappstackSessionStateT$fMonadRWSrwsClientSessionT$fMonadStatesClientSessionT$fMonadWriterwClientSessionT$fMonadReaderrClientSessionT!$fMonadBaseControlbClientSessionT!$fMonadTransControlClientSessionT$fMonadTransClientSessionT$fMonoidClientSessionT$fSemigroupClientSessionT$fHappstackClientSessionT#$fMonadClientSessionsessionDataRWST&$fMonadClientSessionsessionDataWriterT%$fMonadClientSessionsessionDataStateT&$fMonadClientSessionsessionDataReaderT%$fMonadClientSessionsessionDataErrorT$$fMonadClientSessionsessionDataContT-$fMonadClientSessionsessionDataClientSessionT$fFunctorClientSessionT$fApplicativeClientSessionT$fAlternativeClientSessionT$fMonadClientSessionT$fMonadBasebClientSessionT$fMonadPlusClientSessionT$fMonadIOClientSessionT$fMonadFixClientSessionT$fMonadErroreClientSessionT$fMonadContClientSessionT$fHasRqDataClientSessionT$fFilterMonadrClientSessionT$fWebMonadrClientSessionT$fServerMonadClientSessionT$fFunctorSessionStateT$fApplicativeSessionStateT$fAlternativeSessionStateT$fMonadSessionStateT$fMonadPlusSessionStateT$fMonadBasebSessionStateT$fMonadIOSessionStateT$fMonadFixSessionStateT$fMonadErroreSessionStateT$fMonadContSessionStateT$fMonadTransSessionStateT$fHasRqDataSessionStateT$fFilterMonadrSessionStateT$fWebMonadrSessionStateT$fServerMonadSessionStateT$fEqSessionStatus$fOrdSessionStatus$fReadSessionStatus$fShowSessionStatus-happstack-server-7.7.0-JuUyKJ4HxIe4HnEcZOVnERHappstack.Server.Monads Happstacktransformers-0.5.6.2Control.Monad.Trans.State.LazyStateT mtl-2.2.2Control.Monad.State.Classput mapStateT MonadStateget