packages feed

yesod-middleware-csp-1.0.0: test/ExampleApp.hs

{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}

module ExampleApp where

import ClassyPrelude.Yesod hiding (addScript, addScriptRemote)
import Yesod.Core.Types (Logger)
import Yesod.EmbeddedStatic
import Yesod.Middleware.CSP

data ExampleApp = ExampleApp
  { appLogger :: Logger
  , getStatic :: EmbeddedStatic
  }

mkEmbeddedStatic False "eStatic" [ embedDir "test/static" ]

mkYesod "ExampleApp" [parseRoutes|
/static  StaticR  EmbeddedStatic  getStatic

/1 Example1 GET
/2 Example2 GET
/3 Example3 GET
/4 Example4 GET
/5 Example5 GET
/6 Example6 GET
/7 Example7 GET
/8 Example8 GET
|]

getExample1 :: Handler Html
getExample1 = defaultLayout $ do
  addCSP ScriptSrc Https
  addCSP ScriptSrc StrictDynamic
  addCSP ObjectSrc None
  toWidget $ asText ""

getExample2 :: Handler Html
getExample2 = defaultLayout $ do
  addCSP ScriptSrc None
  addCSP ScriptSrc Wildcard
  toWidget $ asText ""

getExample3 :: Handler Html
getExample3 = defaultLayout $ do
  addCSP ScriptSrc Wildcard
  addCSP ScriptSrc None
  toWidget $ asText ""

getExample4 :: Handler Html
getExample4 = defaultLayout $ do
  addCSP ScriptSrc Wildcard
  addCSP ScriptSrc None
  addCSP ScriptSrc DataScheme
  addCSP ScriptSrc Https
  toWidget $ asText ""

getExample5 :: Handler Html
getExample5 = defaultLayout $ do
  addScript $ StaticR js_test_js
  toWidget $ asText ""

getExample6 :: Handler Html
getExample6 = defaultLayout $ do
  addScriptRemote "https://example.com/test.js"
  toWidget $ asText ""

getExample7 :: Handler Html
getExample7 = defaultLayout $ toWidget $ asText ""

getExample8 :: Handler Html
getExample8 = defaultLayout $ do
  addScript $ StaticR js_test_js
  addCSP ScriptSrc None
  toWidget $ asText ""

instance Yesod ExampleApp where
  yesodMiddleware = addCSPMiddleware
  addStaticContent = embedStaticContent getStatic StaticR Right