yesod-auth-oauth2 0.4.1.0 → 0.5.0.0
raw patch · 6 files changed
+18/−18 lines, 6 filesdep −transformersdep ~hoauth2dep ~yesod-authdep ~yesod-corePVP ok
version bump matches the API change (PVP)
Dependencies removed: transformers
Dependency ranges changed: hoauth2, yesod-auth, yesod-core
API changes (from Hackage documentation)
- Yesod.Auth.OAuth2: authOAuth2Widget :: YesodAuth m => WidgetT m IO () -> Text -> OAuth2 -> FetchCreds m -> AuthPlugin m
+ Yesod.Auth.OAuth2: authOAuth2Widget :: YesodAuth m => WidgetFor m () -> Text -> OAuth2 -> FetchCreds m -> AuthPlugin m
- Yesod.Auth.OAuth2.BattleNet: oAuth2BattleNet :: YesodAuth m => Text -> Text -> Text -> WidgetT m IO () -> AuthPlugin m
+ Yesod.Auth.OAuth2.BattleNet: oAuth2BattleNet :: YesodAuth m => Text -> Text -> Text -> WidgetFor m () -> AuthPlugin m
- Yesod.Auth.OAuth2.BattleNet: oauth2BattleNet :: YesodAuth m => WidgetT m IO () -> Text -> Text -> Text -> AuthPlugin m
+ Yesod.Auth.OAuth2.BattleNet: oauth2BattleNet :: YesodAuth m => WidgetFor m () -> Text -> Text -> Text -> AuthPlugin m
- Yesod.Auth.OAuth2.EveOnline: Custom :: (WidgetT m IO ()) -> WidgetType m
+ Yesod.Auth.OAuth2.EveOnline: Custom :: (WidgetFor m ()) -> WidgetType m
- Yesod.Auth.OAuth2.Prelude: AuthPlugin :: Text -> (Method -> [Piece] -> AuthHandler master TypedContent) -> ((Route Auth -> Route master) -> WidgetT master IO ()) -> AuthPlugin master
+ Yesod.Auth.OAuth2.Prelude: AuthPlugin :: Text -> (Method -> [Piece] -> AuthHandler master TypedContent) -> ((Route Auth -> Route master) -> WidgetFor master ()) -> AuthPlugin master
- Yesod.Auth.OAuth2.Prelude: [apLogin] :: AuthPlugin master -> (Route Auth -> Route master) -> WidgetT master IO ()
+ Yesod.Auth.OAuth2.Prelude: [apLogin] :: AuthPlugin master -> (Route Auth -> Route master) -> WidgetFor master ()
- Yesod.Auth.OAuth2.Prelude: authHttpManager :: YesodAuth master => master -> Manager
+ Yesod.Auth.OAuth2.Prelude: authHttpManager :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master) => m Manager
- Yesod.Auth.OAuth2.Prelude: authLayout :: YesodAuth master => WidgetT master IO () -> HandlerT master IO Html
+ Yesod.Auth.OAuth2.Prelude: authLayout :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master) => WidgetFor master () -> m Html
- Yesod.Auth.OAuth2.Prelude: authOAuth2Widget :: YesodAuth m => WidgetT m IO () -> Text -> OAuth2 -> FetchCreds m -> AuthPlugin m
+ Yesod.Auth.OAuth2.Prelude: authOAuth2Widget :: YesodAuth m => WidgetFor m () -> Text -> OAuth2 -> FetchCreds m -> AuthPlugin m
- Yesod.Auth.OAuth2.Prelude: authenticate :: YesodAuth master => Creds master -> HandlerT master IO AuthenticationResult master
+ Yesod.Auth.OAuth2.Prelude: authenticate :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master) => Creds master -> m AuthenticationResult master
- Yesod.Auth.OAuth2.Prelude: getAuthId :: YesodAuth master => Creds master -> HandlerT master IO Maybe AuthId master
+ Yesod.Auth.OAuth2.Prelude: getAuthId :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master) => Creds master -> m Maybe AuthId master
- Yesod.Auth.OAuth2.Prelude: loginHandler :: YesodAuth master => HandlerT Auth HandlerT master IO Html
+ Yesod.Auth.OAuth2.Prelude: loginHandler :: YesodAuth master => AuthHandler master Html
- Yesod.Auth.OAuth2.Prelude: maybeAuthId :: YesodAuth master => HandlerT master IO Maybe AuthId master
+ Yesod.Auth.OAuth2.Prelude: maybeAuthId :: (YesodAuth master, MonadHandler m, (~) * master HandlerSite m) => m Maybe AuthId master
- Yesod.Auth.OAuth2.Prelude: onErrorHtml :: (YesodAuth master, MonadResourceBase m) => Route master -> Text -> HandlerT master m Html
+ Yesod.Auth.OAuth2.Prelude: onErrorHtml :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master) => Route master -> Text -> m Html
- Yesod.Auth.OAuth2.Prelude: onLogin :: YesodAuth master => HandlerT master IO ()
+ Yesod.Auth.OAuth2.Prelude: onLogin :: (YesodAuth master, MonadHandler m, (~) * master HandlerSite m) => m ()
- Yesod.Auth.OAuth2.Prelude: onLogout :: YesodAuth master => HandlerT master IO ()
+ Yesod.Auth.OAuth2.Prelude: onLogout :: (YesodAuth master, MonadHandler m, (~) * master HandlerSite m) => m ()
- Yesod.Auth.OAuth2.Prelude: runHttpRequest :: YesodAuth master => Request -> (Response BodyReader -> HandlerT master IO a) -> HandlerT master IO a
+ Yesod.Auth.OAuth2.Prelude: runHttpRequest :: (YesodAuth master, MonadHandler m, (~) * HandlerSite m master, MonadUnliftIO m) => Request -> (Response BodyReader -> m a) -> m a
Files
- example/Main.hs +0/−1
- src/Yesod/Auth/OAuth2.hs +1/−1
- src/Yesod/Auth/OAuth2/BattleNet.hs +2/−2
- src/Yesod/Auth/OAuth2/Dispatch.hs +8/−6
- src/Yesod/Auth/OAuth2/EveOnline.hs +2/−2
- yesod-auth-oauth2.cabal +5/−6
example/Main.hs view
@@ -78,7 +78,6 @@ return $ Authenticated "1" - authHttpManager = appHttpManager authPlugins = appAuthPlugins instance RenderMessage App FormMessage where
src/Yesod/Auth/OAuth2.hs view
@@ -52,7 +52,7 @@ -- authOAuth2Widget :: YesodAuth m- => WidgetT m IO ()+ => WidgetFor m () -> Text -> OAuth2 -> FetchCreds m
src/Yesod/Auth/OAuth2/BattleNet.hs view
@@ -29,7 +29,7 @@ oauth2BattleNet :: YesodAuth m- => WidgetT m IO () -- ^ Login widget+ => WidgetFor m () -- ^ Login widget -> Text -- ^ User region (e.g. "eu", "cn", "us") -> Text -- ^ Client ID -> Text -- ^ Client Secret@@ -64,6 +64,6 @@ wwwHost "cn" = "www.battlenet.com.cn" wwwHost region = Host $ encodeUtf8 $ region <> ".battle.net" -oAuth2BattleNet :: YesodAuth m => Text -> Text -> Text -> WidgetT m IO () -> AuthPlugin m+oAuth2BattleNet :: YesodAuth m => Text -> Text -> Text -> WidgetFor m () -> AuthPlugin m oAuth2BattleNet i s r w = oauth2BattleNet w r i s {-# DEPRECATED oAuth2BattleNet "Use oauth2BattleNet" #-}
src/Yesod/Auth/OAuth2/Dispatch.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} module Yesod.Auth.OAuth2.Dispatch ( FetchCreds , dispatchAuthRequest@@ -46,7 +47,7 @@ dispatchForward name oauth2 = do csrf <- setSessionCSRF $ tokenSessionKey name oauth2' <- withCallbackAndState name oauth2 csrf- lift $ redirect $ toText $ authorizationUrl oauth2'+ redirect $ toText $ authorizationUrl oauth2' -- | Handle @GET \/callback@ --@@ -59,11 +60,11 @@ csrf <- verifySessionCSRF $ tokenSessionKey name onErrorResponse errInvalidOAuth code <- requireGetParam "code"- manager <- lift $ getsYesod authHttpManager+ manager <- authHttpManager oauth2' <- withCallbackAndState name oauth2 csrf token <- denyLeft $ fetchAccessToken manager oauth2' $ ExchangeToken code creds <- denyLeft $ tryIO $ getCreds manager token- lift $ setCredsRedirect creds+ setCredsRedirect creds where -- On a Left result, log it and return an opaque permission-denied denyLeft :: (MonadHandler m, MonadLogger m, Show e) => IO (Either e a) -> m a@@ -81,7 +82,8 @@ let callbackText = render url callback <- maybe- (throwString+ (liftIO+ $ throwString $ "Invalid callback URI: " <> T.unpack callbackText <> ". Not using an absolute Approot?"@@ -93,9 +95,9 @@ `withQuery` [("state", encodeUtf8 csrf)] } -getParentUrlRender :: HandlerT child (HandlerT parent IO) (Route child -> Text)+getParentUrlRender :: MonadHandler m => m (Route (SubHandlerSite m) -> Text) getParentUrlRender = (.)- <$> lift getUrlRender+ <$> getUrlRender <*> getRouteToParent -- | Set a random, 30-character value in the session
src/Yesod/Auth/OAuth2/EveOnline.hs view
@@ -30,9 +30,9 @@ | SmallWhite | BigBlack | SmallBlack- | Custom (WidgetT m IO ())+ | Custom (WidgetFor m ()) -asWidget :: YesodAuth m => WidgetType m -> WidgetT m IO ()+asWidget :: YesodAuth m => WidgetType m -> WidgetFor m () asWidget Plain = [whamlet|Login via eveonline|] asWidget BigWhite = [whamlet|<img src="https://images.contentful.com/idjq7aai9ylm/4PTzeiAshqiM8osU2giO0Y/5cc4cb60bac52422da2e45db87b6819c/EVE_SSO_Login_Buttons_Large_White.png?w=270&h=45">|] asWidget BigBlack = [whamlet|<img src="https://images.contentful.com/idjq7aai9ylm/4fSjj56uD6CYwYyus4KmES/4f6385c91e6de56274d99496e6adebab/EVE_SSO_Login_Buttons_Large_Black.png?w=270&h=45">|]
yesod-auth-oauth2.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 2abd54f1d50a9de6207536db36d9e0d29146b6f7e9f8b6495dc9f4377f83bc84+-- hash: 8ca8256c419d63fec8925743afe833bfa510d57bf4c9c3f50707f07ad619058a name: yesod-auth-oauth2-version: 0.4.1.0+version: 0.5.0.0 synopsis: OAuth 2.0 authentication plugins description: Library to authenticate with OAuth 2.0 for Yesod web applications. category: Web@@ -36,7 +36,7 @@ , base >=4.9.0.0 && <5 , bytestring >=0.9.1.4 , errors- , hoauth2 >=1.3.0 && <1.6+ , hoauth2 >=1.3.0 && <1.8 , http-client >=0.4.0 && <0.6 , http-conduit >=2.0 && <3.0 , http-types >=0.8 && <0.13@@ -44,10 +44,9 @@ , random , safe-exceptions , text >=0.7 && <2.0- , transformers >=0.2.2 && <0.6 , uri-bytestring- , yesod-auth >=1.3 && <1.5- , yesod-core >=1.2 && <1.5+ , yesod-auth >=1.6.0 && <1.7+ , yesod-core >=1.6.0 && <1.7 exposed-modules: URI.ByteString.Extension Yesod.Auth.OAuth2