@hackage servant-auth-token-persistent0.7.0.0
Persistent backend for servant-auth-token server
Categories
License
BSD-3-Clause
Maintainer
ncrashed@gmail.com
Links
Versions
Installation
Dependencies (16)
- aeson-injector >=1.0 && <1.2
- base >=4.7 && <5
- bytestring >=0.10 && <0.11
- containers >=0.5 && <0.6
- exceptions >=0.8 && <0.11
- mtl >=2.2 && <2.3 Show all…
Dependents (1)
@hackage/acme-everything
servant-auth-token-persistent
Storage backend on persistent for servant-auth-token server.
An itegration of the backend is simple:
-- | Special monad for authorisation actions
newtype AuthM a = AuthM { unAuthM :: PersistentBackendT IO a }
deriving (Functor, Applicative, Monad, MonadIO, MonadError ServantErr, HasStorage, HasAuthConfig)
-- | Execution of authorisation actions that require 'AuthHandler' context
runAuth :: AuthM a -> ServerM a
runAuth m = do
cfg <- asks envAuthConfig
pool <- asks envPool
liftHandler $ ExceptT $ runPersistentBackendT cfg pool $ unAuthM m
Don't forget to add migration to your server startup (if you actually want automatic migrations):
-- | Create new server environment
newServerEnv :: MonadIO m => ServerConfig -> m ServerEnv
newServerEnv cfg = do
let authConfig = defaultAuthConfig
pool <- liftIO $ do
pool <- createPool cfg
-- run migrations
flip runSqlPool pool $ runMigration S.migrateAllAuth
-- create default admin if missing one
_ <- runPersistentBackendT authConfig pool $ ensureAdmin 17 "admin" "123456" "admin@localhost"
return pool
let env = ServerEnv {
envConfig = cfg
, envAuthConfig = authConfig
, envPool = pool
}
return env
See a full example in servant-auth-token-example-persistent.