Added Shakespeare templating and setup basic Maybe-bound lookup for conditional rendering of the page or an appropriate notice that the password doesn't exist.

This commit is contained in:
2022-07-02 13:23:53 -05:00
parent f7a61dcddc
commit d15b40a339
10 changed files with 144 additions and 37 deletions

View File

@ -1,18 +1,23 @@
module Feature.Handlers ( root ) where
module Feature.Handlers ( pwLookup ) where
import Core.Types
import Core.Templates
import qualified Core.Mongo as DB
import Control.Monad.Reader (ask, lift)
import Data.AesonBson (aesonify)
import Data.Bson (Document, Field (..), Value (Array, Doc))
import Data.Bson (Document, Field (..), Value (Array, Doc), lookup)
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import Web.Scotty.Trans (json)
import Prelude hiding (id)
import Web.Scotty.Trans (html, param)
import Prelude hiding (id, lookup)
root :: PurrAction ()
root = do
config <- lift $ ask
docs <- DB.tempGetDocs config
json $ aesonify ["allDocs" := Array (map Doc docs)]
pwLookup :: PurrAction ()
pwLookup = do
id <- param "id"
doc <- DB.findByLink id
html $ LT.pack $ renderIndex id (pwLook doc)
where
pwLook :: Maybe Document -> Maybe String
pwLook (Just x) = (lookup "password" x) :: Maybe String
pwLook _ = Nothing