packages feed

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 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