diff --git a/src/AuthCode.hs b/src/AuthCode.hs index 5d58af2..90f2551 100644 --- a/src/AuthCode.hs +++ b/src/AuthCode.hs @@ -23,7 +23,7 @@ import User import Data.Aeson import Data.ByteString (ByteString (..), fromStrict, toStrict) import Data.Either (fromRight) -import Data.Map.Strict (Map) +import Data.Map.Strict (Map, assocs) import Data.Maybe (isJust, fromMaybe, fromJust) import Data.Time.Clock import Data.Text (pack, replace, Text, stripPrefix) @@ -129,14 +129,15 @@ genUnencryptedCode req url state = do atomically . modifyTVar state $ \s -> s{ activeCodes = M.delete code s.activeCodes } -verify :: Text -> Maybe String -> AuthState user -> IO (Maybe (user, [Scope user])) +verify :: (Show user) => Text -> Maybe String -> AuthState user -> IO (Maybe (user, [Scope user])) verify code mClientID state = do now <- getCurrentTime - atomically $ do - codes <- (readTVar >>= activeCodes) state - print $ "activeCodes: " ++ tshow codes - tokens <- (readTVar >>= activeTokens) state - print $ "activeTokens: " ++ tshow tokens + (codes, tokens) <- atomically $ do + codes <- readTVar state >>= return . activeCodes + tokens <- readTVar state >>= return . activeTokens + return (codes, tokens) + print $ "activeCodes: " ++ show codes + -- print $ "activeTokens: " ++ show ((\(uuid,(usr,scps)) -> (uuid,(usr,showScope <$> scps))) <$> assocs tokens) mData <- atomically $ do result <- (readTVar >=> return . M.lookup code . activeCodes) state modifyTVar state $ \s -> s{ activeCodes = M.delete code s.activeCodes }