diff --git a/Yesod/Auth/OAuth2/EveOnline.hs b/Yesod/Auth/OAuth2/EveOnline.hs
index 29683af..5c75615 100644
--- a/Yesod/Auth/OAuth2/EveOnline.hs
+++ b/Yesod/Auth/OAuth2/EveOnline.hs
@@ -11,7 +11,6 @@
--
module Yesod.Auth.OAuth2.EveOnline
( oauth2Eve
- , oauth2EveWidget
, oauth2EveScoped
, WidgetType(..)
, module Yesod.Auth.OAuth2
@@ -25,9 +24,8 @@ import Control.Exception.Lifted
import Control.Monad (mzero)
import Data.Aeson
import Data.Monoid ((<>))
-import Data.Text as T (Text,unwords)
-import Data.ByteString as B (ByteString)
-import Data.Text.Encoding (encodeUtf8, decodeUtf8)
+import Data.Text (Text)
+import Data.Text.Encoding (encodeUtf8)
import Network.HTTP.Conduit (Manager)
import Yesod.Auth
import Yesod.Auth.OAuth2
@@ -35,18 +33,19 @@ import Yesod.Core.Widget
import qualified Data.Text as T
-data YesodAuth m => WidgetType m
- = BigWhite
+data WidgetType m
+ = Plain -- ^ Simple "Login via eveonline" text
+ | BigWhite
| SmallWhite
| BigBlack
| SmallBlack
| Custom (WidgetT m IO ())
data EveUser = EveUser
- { eveUserId :: Int
+ { _eveUserId :: Int
, eveUserName :: Text
, eveUserExpire :: Text
- , eveScopes :: [Text]
+ , _eveScopes :: [Text]
, eveTokenType :: Text
, eveCharOwnerHash :: Text
}
@@ -65,33 +64,28 @@ instance FromJSON EveUser where
oauth2Eve :: YesodAuth m
=> Text -- ^ Client ID
-> Text -- ^ Client Secret
+ -> WidgetType m
-> AuthPlugin m
-oauth2Eve clientId clientSecret = oauth2EveScoped clientId clientSecret ["publicData"] Nothing
+oauth2Eve clientId clientSecret = oauth2EveScoped clientId clientSecret ["publicData"] . asWidget
-oauth2EveWidget :: YesodAuth m
- => Text -- ^ Client ID
- -> Text -- ^ Client Secret
- -> WidgetType m
- -> AuthPlugin m
-oauth2EveWidget clientId clientSecret w = oauth2EveScoped clientId clientSecret ["publicData"] (Just . toWidget $ w)
where
- toWidget :: YesodAuth m => WidgetType m -> WidgetT m IO ()
- toWidget BigWhite = [whamlet|
|]
- toWidget BigBlack = [whamlet|
|]
- toWidget SmallWhite = [whamlet|
|]
- toWidget SmallBlack = [whamlet|
|]
- toWidget (Custom a) = a
+ asWidget :: YesodAuth m => WidgetType m -> WidgetT m IO ()
+ asWidget Plain = [whamlet|Login via eveonline|]
+ asWidget BigWhite = [whamlet|
|]
+ asWidget BigBlack = [whamlet|
|]
+ asWidget SmallWhite = [whamlet|
|]
+ asWidget SmallBlack = [whamlet|
|]
+ asWidget (Custom a) = a
oauth2EveScoped :: YesodAuth m
=> Text -- ^ Client ID
-> Text -- ^ Client Secret
-> [Text] -- ^ List of scopes to request
- -> Maybe (WidgetT m IO ()) -- ^ Login-Widget
+ -> WidgetT m IO () -- ^ Login widget
-> AuthPlugin m
oauth2EveScoped clientId clientSecret scopes widget =
- case widget of
- Just w -> authOAuth2Widget "eveonline" oauth fetchEveProfile w
- Nothing -> authOAuth2 "eveonline" oauth fetchEveProfile
+ authOAuth2Widget widget "eveonline" oauth fetchEveProfile
+
where
oauth = OAuth2
{ oauthClientId = encodeUtf8 clientId
@@ -110,7 +104,7 @@ fetchEveProfile manager token = do
Left err-> throwIO $ InvalidProfileResponse "eveonline" err
toCreds :: EveUser -> AccessToken -> Creds m
-toCreds user token = Creds
+toCreds user _ = Creds
{ credsPlugin = "eveonline"
, credsIdent = T.pack $ show $ eveCharOwnerHash user
, credsExtra =