Added maybeAuthorized
This commit is contained in:
parent
d8fca59025
commit
be3235a0b2
@ -17,6 +17,7 @@ module Yesod.Yesod
|
|||||||
-- * Convenience functions
|
-- * Convenience functions
|
||||||
, applyLayout
|
, applyLayout
|
||||||
, applyLayoutJson
|
, applyLayoutJson
|
||||||
|
, maybeAuthorized
|
||||||
-- * Defaults
|
-- * Defaults
|
||||||
, defaultErrorHandler
|
, defaultErrorHandler
|
||||||
) where
|
) where
|
||||||
@ -34,6 +35,7 @@ import Data.Monoid (mempty)
|
|||||||
import Data.ByteString.UTF8 (toString)
|
import Data.ByteString.UTF8 (toString)
|
||||||
import Database.Persist
|
import Database.Persist
|
||||||
import Web.Routes.Site (Site)
|
import Web.Routes.Site (Site)
|
||||||
|
import Data.Maybe (isNothing)
|
||||||
|
|
||||||
-- | This class is automatically instantiated when you use the template haskell
|
-- | This class is automatically instantiated when you use the template haskell
|
||||||
-- mkYesod function. You should never need to deal with it directly.
|
-- mkYesod function. You should never need to deal with it directly.
|
||||||
@ -101,7 +103,7 @@ class Yesod a where
|
|||||||
-- Return 'Nothing' is the request is authorized, 'Just' a message if
|
-- Return 'Nothing' is the request is authorized, 'Just' a message if
|
||||||
-- unauthorized. If authentication is required, you should use a redirect;
|
-- unauthorized. If authentication is required, you should use a redirect;
|
||||||
-- the Auth helper provides this functionality automatically.
|
-- the Auth helper provides this functionality automatically.
|
||||||
isAuthorized :: Routes a -> Handler a (Maybe String)
|
isAuthorized :: Routes a -> GHandler s a (Maybe String)
|
||||||
isAuthorized _ = return Nothing
|
isAuthorized _ = return Nothing
|
||||||
|
|
||||||
-- | A type-safe, concise method of creating breadcrumbs for pages. For each
|
-- | A type-safe, concise method of creating breadcrumbs for pages. For each
|
||||||
@ -201,3 +203,12 @@ defaultErrorHandler (BadMethod m) =
|
|||||||
class YesodPersist y where
|
class YesodPersist y where
|
||||||
type YesodDB y :: (* -> *) -> * -> *
|
type YesodDB y :: (* -> *) -> * -> *
|
||||||
runDB :: YesodDB y (GHandler sub y) a -> GHandler sub y a
|
runDB :: YesodDB y (GHandler sub y) a -> GHandler sub y a
|
||||||
|
|
||||||
|
-- | Return the same URL if the user is authorized to see it.
|
||||||
|
--
|
||||||
|
-- Built on top of 'isAuthorized'. This is useful for building page that only
|
||||||
|
-- contain links to pages the user is allowed to see.
|
||||||
|
maybeAuthorized :: Yesod a => Routes a -> GHandler s a (Maybe (Routes a))
|
||||||
|
maybeAuthorized r = do
|
||||||
|
x <- isAuthorized r
|
||||||
|
return $ if isNothing x then Just r else Nothing
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user