diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index 77fabf02b..b5fe77c81 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -46,7 +46,6 @@ import qualified Hasql as H import qualified Hasql.Backend as B import qualified Hasql.Postgres as P -import PostgREST.Auth import PostgREST.Config (AppConfig (..)) import PostgREST.Parsers import PostgREST.PgQuery diff --git a/src/PostgREST/Auth.hs b/src/PostgREST/Auth.hs index 4ced51892..16949c2a2 100644 --- a/src/PostgREST/Auth.hs +++ b/src/PostgREST/Auth.hs @@ -1,19 +1,19 @@ {-# LANGUAGE FlexibleContexts #-} -module PostgREST.Auth where +module PostgREST.Auth ( + DbRole + , LoginAttempt (..) + , setRole + , setJWTEnv + ) where import Control.Applicative import Control.Monad (mzero) import Data.Aeson -import Data.Map (lookup, fromList, toList) +import Data.Map (fromList, toList) import Data.Monoid import Data.String.Conversions (cs) -import Data.Maybe (isNothing) import Data.Text (Text) -import qualified Data.Vector as V -import qualified Hasql as H -import qualified Hasql.Backend as B -import qualified Hasql.Postgres as P import PostgREST.PgQuery (pgFmtLit) import Prelude import qualified Web.JWT as JWT @@ -57,8 +57,9 @@ setDBEnv maybeClaims = (map setVar . toList) <$> maybeClaims where setVar ("role", String val) = setRole val - setVar (key, String val) = "set local postgrest." <> key <> " = " <> cs (pgFmtLit val) <> ";" + setVar (key, String val) = "set local postgrest.claims" <> key <> " = " <> cs (pgFmtLit val) <> ";" +setRole :: Text -> Text setRole role = "set local role " <> cs (pgFmtLit role) <> ";" jwtClaims :: Text -> Text -> Maybe JWT.ClaimsMap diff --git a/src/PostgREST/Middleware.hs b/src/PostgREST/Middleware.hs index 0f6e379bf..cabe54303 100644 --- a/src/PostgREST/Middleware.hs +++ b/src/PostgREST/Middleware.hs @@ -10,11 +10,9 @@ import Data.String.Conversions (cs) import qualified Hasql as H import qualified Hasql.Postgres as P -import Network.HTTP.Types (RequestHeaders) import Network.HTTP.Types.Header (hAccept, hAuthorization, hLocation) -import Network.HTTP.Types.Status (status301, status400, status401, - status415) +import Network.HTTP.Types.Status (status301, status400, status415) import Network.URI (URI (..), parseURI) import Network.Wai (Application, Request (..), Response, isSecure, rawPathInfo, @@ -24,14 +22,11 @@ import Network.Wai.Middleware.Cors (cors) import Network.Wai.Middleware.Gzip (def, gzip) import Network.Wai.Middleware.Static (only, staticPolicy) -import Codec.Binary.Base64.String (decode) import PostgREST.App (contentTypeForAccept) -import PostgREST.Auth (DbRole, LoginAttempt (..), - setRole, setJWTEnv) +import PostgREST.Auth (setRole, setJWTEnv) import PostgREST.Config (AppConfig (..), corsPolicy) import Prelude hiding(concat) -import qualified Web.JWT as JWT import qualified Data.Vector as V import qualified Hasql.Backend as B