AuthEntity

This commit is contained in:
Michael Snoyman 2013-04-11 09:54:46 +03:00
parent f29bdbed0e
commit dfd50f8649

View File

@ -18,6 +18,7 @@ module Yesod.Auth
, getAuth , getAuth
, YesodAuth (..) , YesodAuth (..)
, YesodAuthPersist , YesodAuthPersist
, AuthEntity
-- * Plugin interface -- * Plugin interface
, Creds (..) , Creds (..)
, setCreds , setCreds
@ -301,25 +302,34 @@ newtype CachedMaybeAuth val = CachedMaybeAuth { unCachedMaybeAuth :: Maybe val }
-- full informatin on a given user. -- full informatin on a given user.
-- --
-- Since 1.2.0 -- Since 1.2.0
type YesodAuthPersist master authVal = type YesodAuthPersist master =
( YesodAuth master ( YesodAuth master
, PersistMonadBackend (YesodPersistBackend master (HandlerT master IO)) , PersistMonadBackend (YesodPersistBackend master (HandlerT master IO))
~ PersistEntityBackend authVal ~ PersistEntityBackend (AuthEntity master)
, Key authVal ~ AuthId master , Key (AuthEntity master) ~ AuthId master
, PersistStore (YesodPersistBackend master (HandlerT master IO)) , PersistStore (YesodPersistBackend master (HandlerT master IO))
, PersistEntity authVal , PersistEntity (AuthEntity master)
, YesodPersist master , YesodPersist master
, Typeable authVal , Typeable (AuthEntity master)
) )
-- | If the @AuthId@ for a given site is a persistent ID, this will give the
-- value for that entity. E.g.:
--
-- > type AuthId MySite = UserId
-- > AuthEntity MySite ~ User
--
-- Since 1.2.0
type AuthEntity master = KeyEntity (AuthId master)
-- | Similar to 'maybeAuthId', but redirects to a login page if user is not -- | Similar to 'maybeAuthId', but redirects to a login page if user is not
-- authenticated. -- authenticated.
-- --
-- Since 1.1.0 -- Since 1.1.0
requireAuthId :: YesodAuthPersist master authVal => HandlerT master IO (AuthId master) requireAuthId :: YesodAuthPersist master => HandlerT master IO (AuthId master)
requireAuthId = maybeAuthId >>= maybe redirectLogin return requireAuthId = maybeAuthId >>= maybe redirectLogin return
requireAuth :: YesodAuthPersist master authVal => HandlerT master IO (Entity authVal) requireAuth :: YesodAuthPersist master => HandlerT master IO (Entity (AuthEntity master))
requireAuth = maybeAuth >>= maybe redirectLogin return requireAuth = maybeAuth >>= maybe redirectLogin return
redirectLogin :: Yesod master => HandlerT master IO a redirectLogin :: Yesod master => HandlerT master IO a