Use BasicAuth realm as its Config tag.

For a given realm, there should only be one implementation, so the realm
already serves as a unique identifier to configure BasicAuth from the
Config perspective.

This makes for less noise in the BasicAuth type.
This commit is contained in:
aaron levin 2016-01-07 22:57:37 +01:00
parent f6bdfa3c05
commit 4e6a6c0ce6
2 changed files with 6 additions and 6 deletions

View file

@ -467,16 +467,16 @@ instance HasServer api => HasServer (HttpVersion :> api) where
route (Proxy :: Proxy api) cfg (passToServer subserver $ httpVersion req)
instance (KnownSymbol realm, HasServer api)
=> HasServer (BasicAuth tag realm usr :> api) where
type ServerT (BasicAuth tag realm usr :> api) m = usr -> ServerT api m
type HasCfg (BasicAuth tag realm usr :> api) c
= (HasConfigEntry c tag (BasicAuthCheck usr), HasCfg api c)
=> HasServer (BasicAuth realm usr :> api) where
type ServerT (BasicAuth realm usr :> api) m = usr -> ServerT api m
type HasCfg (BasicAuth realm usr :> api) c
= (HasConfigEntry c realm (BasicAuthCheck usr), HasCfg api c)
route Proxy cfg subserver = WithRequest $ \ request ->
route (Proxy :: Proxy api) cfg (subserver `addAuthCheck` authCheck request)
where
realm = BC8.pack $ symbolVal (Proxy :: Proxy realm)
baCfg = getConfigEntry (Proxy :: Proxy tag) cfg
baCfg = getConfigEntry (Proxy :: Proxy realm) cfg
authCheck req = runBasicAuth req realm baCfg

View file

@ -16,5 +16,5 @@ import GHC.TypeLits (Symbol)
-- In Basic Auth, username and password are base64-encoded and transmitted via
-- the @Authorization@ header. Handshakes are not required, making it
-- relatively efficient.
data BasicAuth config (realm :: Symbol) usr
data BasicAuth (realm :: Symbol) usr
deriving (Typeable)