Portability | Portable |
---|---|
Stability | Stable |
Maintainer | pbrisbin@gmail.com |
A yesod-auth AuthPlugin designed to look users up in Persist where their user id's and a sha1 hash of their password will already be stored.
Example usage:
-- import the function import Helpers.Auth.HashDB -- make sure you have an auth route mkYesodData "MyApp" [$parseRoutes| / RootR GET /auth AuthR Auth getAuth |] -- make your app an instance of YesodAuth using this plugin instance YesodAuth MyApp where type AuthId MyApp = UserId loginDest _ = RootR logoutDest _ = RootR getAuthId = getAuthIdHashDB AuthR showAuthId _ = showIntegral readAuthId _ = readIntegral authPlugins = [authHashDB] -- include the migration function in site startup withServer :: (Application -> IO a) -> IO a withServer f = withConnectionPool $ \p -> do runSqlPool (runMigration migrateUsers) p let h = DevSite p
Your app must be an instance of YesodPersist and the username and hashed-passwords must be added manually to the database.
echo -n 'MyPassword' | sha1sum
can be used to get the hash from the commandline.
- authHashDB :: (YesodAuth y, YesodPersist y, PersistBackend (YesodDB y (GGHandler Auth y IO))) => AuthPlugin y
- getAuthIdHashDB :: (Key User ~ AuthId master, PersistBackend (YesodDB master (GGHandler sub master IO)), YesodPersist master, YesodAuth master) => (AuthRoute -> Route master) -> Creds m -> GHandler sub master (Maybe UserId)
- type UserId = Key User
- migrateUsers :: forall m. MonadPeelIO m => Migration (SqlPersist m)
Documentation
authHashDB :: (YesodAuth y, YesodPersist y, PersistBackend (YesodDB y (GGHandler Auth y IO))) => AuthPlugin ySource
Prompt for username and password, validate that against a database which holds the username and a hash of the password
:: (Key User ~ AuthId master, PersistBackend (YesodDB master (GGHandler sub master IO)), YesodPersist master, YesodAuth master) | |
=> (AuthRoute -> Route master) | your site's Auth Route |
-> Creds m | the creds argument |
-> GHandler sub master (Maybe UserId) |
A drop in for the getAuthId method of your YesodAuth instance which can be used if authHashDB is the only plugin in use.
migrateUsers :: forall m. MonadPeelIO m => Migration (SqlPersist m)Source