{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} module Hledger.Web.Handler.Common ( getDownloadR , getFaviconR , getManageR , getRobotsR , getRootR ) where import qualified Data.Text as T import Yesod.Default.Handlers (getFaviconR, getRobotsR) import Hledger (jfiles) import Hledger.Web.Import import Hledger.Web.Widget.Common (journalFile404) getRootR :: Handler Html getRootR = redirect JournalR getManageR :: Handler Html getManageR = do VD{caps, j} <- getViewData when (CapManage `notElem` caps) (permissionDenied "Missing the 'manage' capability") defaultLayout $ do setTitle "Manage journal" $(widgetFile "manage") getDownloadR :: FilePath -> Handler TypedContent getDownloadR f = do VD{caps, j} <- getViewData when (CapManage `notElem` caps) (permissionDenied "Missing the 'manage' capability") (f', txt) <- journalFile404 f j addHeader "Content-Disposition" ("attachment; filename=\"" <> T.pack f' <> "\"") sendResponse ("text/plain" :: ByteString, toContent txt)