changed header type for user endpoint
This commit is contained in:
parent
3e2d07518c
commit
c68bf943f3
@ -24,7 +24,7 @@ import Data.List (find, elemIndex)
|
|||||||
import Data.Maybe (fromMaybe, fromJust, isJust, isNothing)
|
import Data.Maybe (fromMaybe, fromJust, isJust, isNothing)
|
||||||
import Data.String (IsString (..))
|
import Data.String (IsString (..))
|
||||||
import Data.Text hiding (elem, find, head, length, map, null, splitAt, tail, words)
|
import Data.Text hiding (elem, find, head, length, map, null, splitAt, tail, words)
|
||||||
import Data.Text.Encoding (decodeUtf8)
|
import Data.Text.Encoding (decodeUtf8, encodeUtf8)
|
||||||
import Data.Time.Clock (NominalDiffTime (..), nominalDay, UTCTime(..), getCurrentTime, addUTCTime)
|
import Data.Time.Clock (NominalDiffTime (..), nominalDay, UTCTime(..), getCurrentTime, addUTCTime)
|
||||||
|
|
||||||
import qualified Data.ByteString.Char8 as BS
|
import qualified Data.ByteString.Char8 as BS
|
||||||
@ -234,23 +234,28 @@ mkToken state = do
|
|||||||
|
|
||||||
|
|
||||||
type Users = "users"
|
type Users = "users"
|
||||||
|
type HeaderR = Header' [Strict, Required]
|
||||||
|
|
||||||
type Me userData = Users
|
type Me userData = Users
|
||||||
:> "me"
|
:> "me"
|
||||||
:> Header "Authorization" JWTWrapper
|
:> HeaderR "Authorization" Text
|
||||||
:> Get '[JSON] userData
|
:> Get '[JSON] userData
|
||||||
|
|
||||||
type UserList userData = Users
|
type UserList userData = Users
|
||||||
:> "query"
|
:> "query"
|
||||||
:> Header "Authorization" JWTWrapper
|
:> HeaderR "Authorization" Text
|
||||||
:> Get '[JSON] [userData] -- TODO support query params
|
:> Get '[JSON] [userData] -- TODO support query params
|
||||||
|
|
||||||
|
|
||||||
userEndpoint :: forall user userData . UserData user userData => AuthServer (Me userData)
|
userEndpoint :: forall user userData . UserData user userData => AuthServer (Me userData)
|
||||||
userEndpoint = handleUserData
|
userEndpoint = handleUserData
|
||||||
where
|
where
|
||||||
handleUserData :: Maybe JWTWrapper -> AuthHandler userData
|
handleUserData :: Text -> AuthHandler userData
|
||||||
handleUserData jwtw = do
|
handleUserData jwtw = do
|
||||||
|
let mToken = stripPrefix "Bearer " jwtw
|
||||||
|
unless (isJust mToken) . throwError $ err500 { errBody = "Invalid token format"}
|
||||||
|
token <- asks (decodeToken (fromJust mToken)) >>= liftIO
|
||||||
|
liftIO $ putStrLn "decoded token:" >> print token
|
||||||
undefined
|
undefined
|
||||||
-- let
|
-- let
|
||||||
-- scopes' = map (readScope @user @userData) $ words scopes
|
-- scopes' = map (readScope @user @userData) $ words scopes
|
||||||
@ -258,10 +263,15 @@ userEndpoint = handleUserData
|
|||||||
-- liftIO . putStrLn $ "user: " ++ show u ++ " | scopes: " ++ show (map (showScope @user @userData) scopes')
|
-- liftIO . putStrLn $ "user: " ++ show u ++ " | scopes: " ++ show (map (showScope @user @userData) scopes')
|
||||||
-- return uData
|
-- return uData
|
||||||
|
|
||||||
|
decodeToken :: Text -> AuthState -> IO (Either JwtError JwtContent)
|
||||||
|
decodeToken token state = do
|
||||||
|
pubKey <- atomically $ readTVar state >>= return . publicKey
|
||||||
|
jwkDecode pubKey $ encodeUtf8 token
|
||||||
|
|
||||||
userListEndpoint :: forall user userData . UserData user userData => AuthServer (UserList userData)
|
userListEndpoint :: forall user userData . UserData user userData => AuthServer (UserList userData)
|
||||||
userListEndpoint = handleUserData
|
userListEndpoint = handleUserData
|
||||||
where
|
where
|
||||||
handleUserData :: Maybe JWTWrapper -> AuthHandler [userData]
|
handleUserData :: Text -> AuthHandler [userData]
|
||||||
handleUserData jwtw = do
|
handleUserData jwtw = do
|
||||||
undefined
|
undefined
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user