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)
 |