| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.Auth.Server.Internal.BasicAuth
Synopsis
- wwwAuthenticatedErr :: ByteString -> ServerError
- type family BasicAuthCfg
- class FromBasicAuthData a where
- fromBasicAuthData :: BasicAuthData -> BasicAuthCfg -> IO (AuthResult a)
- basicAuthCheck :: FromBasicAuthData usr => BasicAuthCfg -> AuthCheck usr
Documentation
wwwAuthenticatedErr :: ByteString -> ServerError Source #
A ServerError that asks the client to authenticate via Basic
Authentication, should be invoked by an application whenever
appropriate. The argument is the realm.
type family BasicAuthCfg Source #
A type holding the configuration for Basic Authentication.
It is defined as a type family with no arguments, so that
it can be instantiated to whatever type you need to
authenticate your users (use type instance BasicAuthCfg = ...).
Note that the instantiation is application-wide, i.e. there can be only one instance. As a consequence, it should not be instantiated in a library.
Basic Authentication expects an element of type BasicAuthCfg
to be in the Context; that element is then passed automatically
to the instance of FromBasicAuthData together with the
authentication data obtained from the client.
If you do not need a configuration for Basic Authentication,
you can use just BasicAuthCfg = (), and recall to also
add () to the Context.
A basic but more interesting example is to take as BasicAuthCfg
a list of authorised username/password pairs:
deriving instance Eq BasicAuthData
type instance BasicAuthCfg = [BasicAuthData]
instance FromBasicAuthData User where
fromBasicAuthData authData authCfg =
if elem authData authCfg then ...class FromBasicAuthData a where Source #
Methods
fromBasicAuthData :: BasicAuthData -> BasicAuthCfg -> IO (AuthResult a) Source #
Whether the username exists and the password is correct.
Note that, rather than passing a Pass to the function, we pass a
function that checks an EncryptedPass. This is to make sure you don't
accidentally do something untoward with the password, like store it.
basicAuthCheck :: FromBasicAuthData usr => BasicAuthCfg -> AuthCheck usr Source #