yesod-auth 1.6.0 → 1.6.1
raw patch · 3 files changed
+68/−42 lines, 3 files
Files
- ChangeLog.md +4/−0
- Yesod/Auth.hs +63/−41
- yesod-auth.cabal +1/−1
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.6.1++* Relax a number of type signatures [#1488](https://github.com/yesodweb/yesod/issues/1488)+ ## 1.6.0 * Upgrade to yesod-core 1.6.0
Yesod/Auth.hs view
@@ -112,7 +112,7 @@ type AuthId master -- | specify the layout. Uses defaultLayout by default- authLayout :: WidgetFor master () -> AuthHandler master Html+ authLayout :: (MonadHandler m, HandlerSite m ~ master) => WidgetFor master () -> m Html authLayout = liftHandler . defaultLayout -- | Default destination on successful login, if no other@@ -128,7 +128,7 @@ -- Default implementation is in terms of @'getAuthId'@ -- -- @since: 1.4.4- authenticate :: Creds master -> AuthHandler master (AuthenticationResult master)+ authenticate :: (MonadHandler m, HandlerSite m ~ master) => Creds master -> m (AuthenticationResult master) authenticate creds = do muid <- getAuthId creds @@ -138,7 +138,7 @@ -- -- Default implementation is in terms of @'authenticate'@ --- getAuthId :: Creds master -> AuthHandler master (Maybe (AuthId master))+ getAuthId :: (MonadHandler m, HandlerSite m ~ master) => Creds master -> m (Maybe (AuthId master)) getAuthId creds = do auth <- authenticate creds @@ -185,7 +185,7 @@ -- | When being redirected to the login page should the current page -- be set to redirect back to. Default is 'True'.- -- + -- -- @since 1.4.21 redirectToCurrent :: master -> Bool redirectToCurrent _ = True@@ -194,16 +194,16 @@ -- type. This allows backends to reuse persistent connections. If none of -- the backends you're using use HTTP connections, you can safely return -- @error \"authHttpManager\"@ here.- authHttpManager :: AuthHandler master Manager+ authHttpManager :: (MonadHandler m, HandlerSite m ~ master) => m Manager authHttpManager = liftIO getGlobalManager -- | Called on a successful login. By default, calls -- @addMessageI "success" NowLoggedIn@.- onLogin :: AuthHandler master ()+ onLogin :: (MonadHandler m, master ~ HandlerSite m) => m () onLogin = addMessageI "success" Msg.NowLoggedIn -- | Called on logout. By default, does nothing- onLogout :: AuthHandler master ()+ onLogout :: (MonadHandler m, master ~ HandlerSite m) => m () onLogout = return () -- | Retrieves user credentials, if user is authenticated.@@ -215,16 +215,16 @@ -- other than a browser. -- -- @since 1.2.0- maybeAuthId :: AuthHandler master (Maybe (AuthId master))+ maybeAuthId :: (MonadHandler m, master ~ HandlerSite m) => m (Maybe (AuthId master)) default maybeAuthId- :: (YesodAuthPersist master, Typeable (AuthEntity master))- => AuthHandler master (Maybe (AuthId master))+ :: (MonadHandler m, master ~ HandlerSite m, YesodAuthPersist master, Typeable (AuthEntity master))+ => m (Maybe (AuthId master)) maybeAuthId = defaultMaybeAuthId -- | Called on login error for HTTP requests. By default, calls -- @addMessage@ with "error" as status and redirects to @dest@.- onErrorHtml :: Route master -> Text -> AuthHandler master Html+ onErrorHtml :: (MonadHandler m, HandlerSite m ~ master) => Route master -> Text -> m Html onErrorHtml dest msg = do addMessage "error" $ toHtml msg fmap asHtml $ redirect dest@@ -235,7 +235,7 @@ -- The HTTP 'Request' is given in case it is useful to change behavior based on inspecting the request. -- This is an experimental API that is not broadly used throughout the yesod-auth code base runHttpRequest- :: MonadAuthHandler master m+ :: (MonadHandler m, HandlerSite m ~ master, MonadUnliftIO m) => Request -> (Response BodyReader -> m a) -> m a@@ -261,8 +261,8 @@ -- -- @since 1.1.2 defaultMaybeAuthId- :: (YesodAuthPersist master, Typeable (AuthEntity master))- => AuthHandler master (Maybe (AuthId master))+ :: (MonadHandler m, HandlerSite m ~ master, YesodAuthPersist master, Typeable (AuthEntity master))+ => m (Maybe (AuthId master)) defaultMaybeAuthId = runMaybeT $ do s <- MaybeT $ lookupSession credsKey aid <- MaybeT $ return $ fromPathPiece s@@ -270,9 +270,13 @@ return aid cachedAuth- :: (YesodAuthPersist master, Typeable (AuthEntity master))+ :: ( MonadHandler m+ , YesodAuthPersist master+ , Typeable (AuthEntity master)+ , HandlerSite m ~ master+ ) => AuthId master- -> AuthHandler master (Maybe (AuthEntity master))+ -> m (Maybe (AuthEntity master)) cachedAuth = fmap unCachedMaybeAuth . cached@@ -305,9 +309,10 @@ loginErrorMessageMasterI- :: Route master+ :: (MonadHandler m, HandlerSite m ~ master, YesodAuth master)+ => Route master -> AuthMessage- -> AuthHandler master TypedContent+ -> m TypedContent loginErrorMessageMasterI dest msg = do mr <- getMessageRender loginErrorMessage dest (mr msg)@@ -315,23 +320,24 @@ -- | For HTML, set the message and redirect to the route. -- For JSON, send the message and a 401 status loginErrorMessage- :: Route master+ :: (MonadHandler m, YesodAuth (HandlerSite m))+ => Route (HandlerSite m) -> Text- -> AuthHandler master TypedContent+ -> m TypedContent loginErrorMessage dest msg = messageJson401 msg (onErrorHtml dest msg) messageJson401- :: MonadAuthHandler master m+ :: MonadHandler m => Text -> m Html -> m TypedContent messageJson401 = messageJsonStatus unauthorized401 -messageJson500 :: MonadAuthHandler master m => Text -> m Html -> m TypedContent+messageJson500 :: MonadHandler m => Text -> m Html -> m TypedContent messageJson500 = messageJsonStatus internalServerError500 messageJsonStatus- :: MonadAuthHandler master m+ :: MonadHandler m => Status -> Text -> m Html@@ -348,8 +354,9 @@ setCredsRedirect- :: Creds master -- ^ new credentials- -> AuthHandler master TypedContent+ :: (MonadHandler m, YesodAuth (HandlerSite m))+ => Creds (HandlerSite m) -- ^ new credentials+ -> m TypedContent setCredsRedirect creds = do y <- getYesod auth <- authenticate creds@@ -388,9 +395,10 @@ return $ renderAuthMessage master langs msg -- | Sets user credentials for the session after checking them with authentication backends.-setCreds :: Bool -- ^ if HTTP redirects should be done- -> Creds master -- ^ new credentials- -> AuthHandler master ()+setCreds :: (MonadHandler m, YesodAuth (HandlerSite m))+ => Bool -- ^ if HTTP redirects should be done+ -> Creds (HandlerSite m) -- ^ new credentials+ -> m () setCreds doRedirects creds = if doRedirects then void $ setCredsRedirect creds@@ -412,8 +420,9 @@ -- | Clears current user credentials for the session. -- -- @since 1.1.7-clearCreds :: Bool -- ^ if HTTP redirect to 'logoutDest' should be done- -> AuthHandler master ()+clearCreds :: (MonadHandler m, YesodAuth (HandlerSite m))+ => Bool -- ^ if HTTP redirect to 'logoutDest' should be done+ -> m () clearCreds doRedirects = do y <- getYesod onLogout@@ -442,7 +451,7 @@ [ (T.pack "logged_in", Bool $ maybe False (const True) creds) ] -setUltDestReferer' :: AuthHandler master ()+setUltDestReferer' :: (MonadHandler m, YesodAuth (HandlerSite m)) => m () setUltDestReferer' = do master <- getYesod when (redirectToReferer master) setUltDestReferer@@ -477,7 +486,9 @@ , Key val ~ AuthId master , PersistEntity val , Typeable val- ) => AuthHandler master (Maybe (Entity val))+ , MonadHandler m+ , HandlerSite m ~ master+ ) => m (Maybe (Entity val)) maybeAuth = fmap (fmap (uncurry Entity)) maybeAuthPair -- | Similar to 'maybeAuth', but doesn’t assume that you are using a@@ -485,8 +496,12 @@ -- -- @since 1.4.0 maybeAuthPair- :: (YesodAuthPersist master, Typeable (AuthEntity master))- => AuthHandler master (Maybe (AuthId master, AuthEntity master))+ :: ( YesodAuthPersist master+ , Typeable (AuthEntity master)+ , MonadHandler m+ , HandlerSite m ~ master+ )+ => m (Maybe (AuthId master, AuthEntity master)) maybeAuthPair = runMaybeT $ do aid <- MaybeT maybeAuthId ae <- MaybeT $ cachedAuth aid@@ -517,15 +532,18 @@ type AuthEntity master :: * type AuthEntity master = KeyEntity (AuthId master) - getAuthEntity :: AuthId master -> AuthHandler master (Maybe (AuthEntity master))+ getAuthEntity :: (MonadHandler m, HandlerSite m ~ master)+ => AuthId master -> m (Maybe (AuthEntity master)) default getAuthEntity :: ( YesodPersistBackend master ~ backend , PersistRecordBackend (AuthEntity master) backend , Key (AuthEntity master) ~ AuthId master , PersistStore backend+ , MonadHandler m+ , HandlerSite m ~ master )- => AuthId master -> AuthHandler master (Maybe (AuthEntity master))+ => AuthId master -> m (Maybe (AuthEntity master)) getAuthEntity = liftHandler . runDB . get @@ -536,7 +554,7 @@ -- authenticated or responds with error 401 if this is an API client (expecting JSON). -- -- @since 1.1.0-requireAuthId :: AuthHandler master (AuthId master)+requireAuthId :: (MonadHandler m, YesodAuth (HandlerSite m)) => m (AuthId (HandlerSite m)) requireAuthId = maybeAuthId >>= maybe handleAuthLack return -- | Similar to 'maybeAuth', but redirects to a login page if user is not@@ -548,7 +566,9 @@ , Key val ~ AuthId master , PersistEntity val , Typeable val- ) => AuthHandler master (Entity val)+ , MonadHandler m+ , HandlerSite m ~ master+ ) => m (Entity val) requireAuth = maybeAuth >>= maybe handleAuthLack return -- | Similar to 'requireAuth', but not tied to Persistent's 'Entity' type.@@ -558,16 +578,18 @@ requireAuthPair :: ( YesodAuthPersist master , Typeable (AuthEntity master)+ , MonadHandler m+ , HandlerSite m ~ master )- => AuthHandler master (AuthId master, AuthEntity master)+ => m (AuthId master, AuthEntity master) requireAuthPair = maybeAuthPair >>= maybe handleAuthLack return -handleAuthLack :: AuthHandler master a+handleAuthLack :: (YesodAuth (HandlerSite m), MonadHandler m) => m a handleAuthLack = do aj <- acceptsJson if aj then notAuthenticated else redirectLogin -redirectLogin :: AuthHandler master a+redirectLogin :: (YesodAuth (HandlerSite m), MonadHandler m) => m a redirectLogin = do y <- getYesod when (redirectToCurrent y) setUltDestCurrent
yesod-auth.cabal view
@@ -1,5 +1,5 @@ name: yesod-auth-version: 1.6.0+version: 1.6.1 license: MIT license-file: LICENSE author: Michael Snoyman, Patrick Brisbin