39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| {-# 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)
 |