Merge pull request #1394 from mchaver/add-waisubsitewithauth
Add WaiSubsiteWithAuth
This commit is contained in:
commit
602d1ff06a
@ -1,3 +1,7 @@
|
|||||||
|
## 1.4.34
|
||||||
|
|
||||||
|
* Add `WaiSubsiteWithAuth`. [#1394](https://github.com/yesodweb/yesod/pull/1394)
|
||||||
|
|
||||||
## 1.4.33
|
## 1.4.33
|
||||||
|
|
||||||
* Adds curly brackets to route parser. [#1363](https://github.com/yesodweb/yesod/pull/1363)
|
* Adds curly brackets to route parser. [#1363](https://github.com/yesodweb/yesod/pull/1363)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import Yesod.Routes.Class
|
|||||||
import qualified Network.Wai as W
|
import qualified Network.Wai as W
|
||||||
import Yesod.Core.Types
|
import Yesod.Core.Types
|
||||||
import Yesod.Core.Content
|
import Yesod.Core.Content
|
||||||
import Yesod.Core.Handler (stripHandlerT)
|
import Yesod.Core.Handler (sendWaiApplication, stripHandlerT)
|
||||||
import Yesod.Core.Class.Yesod
|
import Yesod.Core.Class.Yesod
|
||||||
import Yesod.Core.Class.Handler
|
import Yesod.Core.Class.Handler
|
||||||
|
|
||||||
@ -28,6 +28,15 @@ instance YesodSubDispatch WaiSubsite master where
|
|||||||
where
|
where
|
||||||
WaiSubsite app = ysreGetSub $ yreSite ysreParentEnv
|
WaiSubsite app = ysreGetSub $ yreSite ysreParentEnv
|
||||||
|
|
||||||
|
instance YesodSubDispatch WaiSubsiteWithAuth (HandlerT master IO) where
|
||||||
|
yesodSubDispatch YesodSubRunnerEnv {..} req =
|
||||||
|
ysreParentRunner base ysreParentEnv (fmap ysreToParentRoute route) req
|
||||||
|
where
|
||||||
|
base = stripHandlerT handlert ysreGetSub ysreToParentRoute route
|
||||||
|
route = Just $ WaiSubsiteWithAuthRoute (W.pathInfo req) []
|
||||||
|
WaiSubsiteWithAuth set = ysreGetSub $ yreSite $ ysreParentEnv
|
||||||
|
handlert = sendWaiApplication $ set
|
||||||
|
|
||||||
-- | A helper function for creating YesodSubDispatch instances, used by the
|
-- | A helper function for creating YesodSubDispatch instances, used by the
|
||||||
-- internal generated code. This function has been exported since 1.4.11.
|
-- internal generated code. This function has been exported since 1.4.11.
|
||||||
-- It promotes a subsite handler to a wai application.
|
-- It promotes a subsite handler to a wai application.
|
||||||
|
|||||||
@ -34,6 +34,7 @@ module Yesod.Core.Dispatch
|
|||||||
, defaultMiddlewaresNoLogging
|
, defaultMiddlewaresNoLogging
|
||||||
-- * WAI subsites
|
-- * WAI subsites
|
||||||
, WaiSubsite (..)
|
, WaiSubsite (..)
|
||||||
|
, WaiSubsiteWithAuth (..)
|
||||||
, subHelper
|
, subHelper
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
|||||||
@ -175,9 +175,14 @@ type BottomOfHeadAsync master
|
|||||||
|
|
||||||
type Texts = [Text]
|
type Texts = [Text]
|
||||||
|
|
||||||
-- | Wrap up a normal WAI application as a Yesod subsite.
|
-- | Wrap up a normal WAI application as a Yesod subsite. Ignore parent site's middleware and isAuthorized.
|
||||||
newtype WaiSubsite = WaiSubsite { runWaiSubsite :: W.Application }
|
newtype WaiSubsite = WaiSubsite { runWaiSubsite :: W.Application }
|
||||||
|
|
||||||
|
-- | Like 'WaiSubsite', but applies parent site's middleware and isAuthorized.
|
||||||
|
--
|
||||||
|
-- @since 1.4.34
|
||||||
|
newtype WaiSubsiteWithAuth = WaiSubsiteWithAuth { runWaiSubsiteWithAuth :: W.Application }
|
||||||
|
|
||||||
data RunHandlerEnv site = RunHandlerEnv
|
data RunHandlerEnv site = RunHandlerEnv
|
||||||
{ rheRender :: !(Route site -> [(Text, Text)] -> Text)
|
{ rheRender :: !(Route site -> [(Text, Text)] -> Text)
|
||||||
, rheRoute :: !(Maybe (Route site))
|
, rheRoute :: !(Maybe (Route site))
|
||||||
@ -560,6 +565,14 @@ instance RenderRoute WaiSubsite where
|
|||||||
instance ParseRoute WaiSubsite where
|
instance ParseRoute WaiSubsite where
|
||||||
parseRoute (x, y) = Just $ WaiSubsiteRoute x y
|
parseRoute (x, y) = Just $ WaiSubsiteRoute x y
|
||||||
|
|
||||||
|
instance RenderRoute WaiSubsiteWithAuth where
|
||||||
|
data Route WaiSubsiteWithAuth = WaiSubsiteWithAuthRoute [Text] [(Text,Text)]
|
||||||
|
deriving (Show, Eq, Read, Ord)
|
||||||
|
renderRoute (WaiSubsiteWithAuthRoute ps qs) = (ps,qs)
|
||||||
|
|
||||||
|
instance ParseRoute WaiSubsiteWithAuth where
|
||||||
|
parseRoute (x, y) = Just $ WaiSubsiteWithAuthRoute x y
|
||||||
|
|
||||||
data Logger = Logger
|
data Logger = Logger
|
||||||
{ loggerSet :: !LoggerSet
|
{ loggerSet :: !LoggerSet
|
||||||
, loggerDate :: !DateCacheGetter
|
, loggerDate :: !DateCacheGetter
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
name: yesod-core
|
name: yesod-core
|
||||||
version: 1.4.33
|
version: 1.4.34
|
||||||
license: MIT
|
license: MIT
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
author: Michael Snoyman <michael@snoyman.com>
|
author: Michael Snoyman <michael@snoyman.com>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user