wai-middleware-crowd 0.1.0.0 → 0.1.1.0
raw patch · 3 files changed
+30/−4 lines, 3 filesdep +vaultPVP ok
version bump matches the API change (PVP)
Dependencies added: vault
API changes (from Hackage documentation)
+ Network.Wai.Middleware.Crowd: getUserName :: Request -> Maybe ByteString
Files
- ChangeLog.md +5/−1
- src/Network/Wai/Middleware/Crowd.hs +23/−2
- wai-middleware-crowd.cabal +2/−1
ChangeLog.md view
@@ -1,3 +1,7 @@-## 0.0.0+## 0.1.1.0++* getUserName++## 0.1.0.0 * Initial release
src/Network/Wai/Middleware/Crowd.hs view
@@ -16,6 +16,7 @@ -- * Helpers , smartApproot , waiMiddlewareCrowdVersion+ , getUserName ) where import Blaze.ByteString.Builder (fromByteString, toByteString)@@ -25,6 +26,7 @@ import qualified Data.Text as T import Data.Text.Encoding (decodeUtf8With, encodeUtf8) import Data.Text.Encoding.Error (lenientDecode)+import qualified Data.Vault.Lazy as Vault import Data.Version (Version) import GHC.Generics (Generic) import Network.HTTP.Client (Manager, newManager)@@ -32,11 +34,13 @@ import Network.HTTP.Types (Header, status200, status303) import Network.Wai (Middleware, Request, pathInfo, rawPathInfo, rawQueryString,- responseBuilder, responseLBS)+ responseBuilder, responseLBS,+ vault) import Network.Wai.Approot import Network.Wai.ClientSession import Network.Wai.OpenId import qualified Paths_wai_middleware_crowd as Paths+import System.IO.Unsafe (unsafePerformIO) -- | Settings for creating the Crowd middleware. --@@ -121,6 +125,19 @@ csKey :: S.ByteString csKey = "crowd_state" +userKey :: Vault.Key S.ByteString+userKey = unsafePerformIO Vault.newKey+{-# NOINLINE userKey #-}++-- | Get the username for the current user.+--+-- If called on a @Request@ behind the middleware, should always return a+-- @Just@ value.+--+-- Since 0.1.1.0+getUserName :: Request -> Maybe S.ByteString+getUserName = Vault.lookup userKey . vault+ saveCrowdState :: Key -> Int -> CrowdState -> IO Header saveCrowdState key age cs = saveCookieValue key csKey age cs @@ -137,7 +154,11 @@ cs <- loadCookieValue key csKey req case cs of- Just (CSLoggedIn _) -> app req respond+ Just (CSLoggedIn ident) ->+ let req' = req+ { vault = Vault.insert userKey ident $ vault req+ }+ in app req' respond _ -> case pathInfo req of ["_crowd_middleware", "complete"] -> do eres <- openIdComplete req man
wai-middleware-crowd.cabal view
@@ -1,5 +1,5 @@ name: wai-middleware-crowd-version: 0.1.0.0+version: 0.1.1.0 synopsis: Middleware and utilities for using Atlassian Crowd authentication description: See README license: MIT@@ -35,6 +35,7 @@ , cookie >= 0.4 , http-client-tls >= 0.2 , unix-compat >= 0.4+ , vault hs-source-dirs: src default-language: Haskell2010