packages feed

happs-tutorial-0.4.1: src/ControllerMisc.hs

module ControllerMisc where

import HAppS.Server

import Misc
import ViewStuff
import StateStuff

-- The final value is HtmlString so that the HAppS machinery does the right thing with toMessage.
--   If the final value was left as a String, the page would display as text, not html.
--tutlayoutReq :: Request -> [([Char], String)] -> String -> WebT IO Response
tutlayoutU rglobs attrs tmpl = ( toResponse . HtmlString . tutlayout rglobs attrs ) tmpl

-- getMbSessKey rq = readData (readCookieValue "sid") rq
getMbSessKey :: Request -> Maybe SessionKey
getMbSessKey rq = readData (readCookieValue "sid") rq

getmbLoggedInUser :: Request -> IO (Maybe String)
getmbLoggedInUser rq = do
  mbSd <- getMbSessData rq
  return $ do
    sd <- mbSd
    return . sesUser $ sd

getMbSessData :: Request -> IO (Maybe SessionData)                          
getMbSessData rq = do
  maybe ( return Nothing )
        ( query . GetSession )
        ( getMbSessKey rq )

-- updateUserSp :: RenderGlobals -> User -> User -> (RenderGlobals -> ServerPartT IO Response) -> WebT IO Response
updateUserSp rglobs newuser withrgSp rq = do
  case mbUser rglobs of
      Nothing -> return $ tutlayoutU rglobs [("errormsg", "updateUserSp: no user")] "errortemplate"
      Just olduser -> do update (UpdateUser olduser newuser)
                         let newrglobs = RenderGlobals (templates rglobs) (Just newuser)
                         unServerPartT ( withrgSp newrglobs ) rq