From e9ea90182193cb6a813244bc676a8fe2f573fa29 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 11 Oct 2015 13:51:32 -0400 Subject: Add Authentication module. --- src/Authentication.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/Authentication.hs (limited to 'src/Authentication.hs') diff --git a/src/Authentication.hs b/src/Authentication.hs new file mode 100644 index 0000000..2908309 --- /dev/null +++ b/src/Authentication.hs @@ -0,0 +1,31 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE TemplateHaskell #-} +module Authentication (User, queryUser) where + +import Data.Aeson +import GHC.Generics +import Network.HTTP.Conduit +import Data.ByteString.Lazy.Char8 (unpack) +import Control.Exception + +makeUrl = ("https://www.googleapis.com/oauth2/v3/tokeninfo?id_token="++) + +data User = User + { email :: String + , name :: String + } deriving (Eq, Show, Generic) + +instance FromJSON User + +queryUser :: String -> IO (Maybe User) +queryUser token = (queryUser' token) `catch` \e -> do + print (e :: HttpException) + return Nothing + +queryUser' token = do + response <- simpleHttp (makeUrl token) + return (decode response) -- cgit v1.2.3