Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type Username = Text
- class (YesodAuth master, HmacSendMail master, HmacDB db, UserCredentials (UserAccount db), TokenData (TokenFoo db), RenderMessage master FormMessage) => YesodHmacKeccak db master | master -> db where
- hmacPlugin :: YesodHmacKeccak db master => AuthPlugin master
- newAccountR :: AuthRoute
- verifyR :: ByteString -> AuthRoute
- resetPasswordR :: AuthRoute
- loginR :: AuthRoute
- defaultLoginWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master ()
- defaultCheckValidUsername :: (MonadHandler m, HandlerSite m ~ master, YesodHmacKeccak db master) => Username -> m (Either Text Username)
- postLoginR' :: (YesodHmacKeccak db master, YesodAuth master) => AuthHandler master RepJson
- data NewAccountData = NewAccountData {
- naUsername :: Username
- naEmail :: Text
- newAccountForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m NewAccountData
- newAccountWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master ()
- getNewAccountR' :: YesodHmacKeccak db master => AuthHandler master Html
- postNewAccountR' :: YesodHmacKeccak db master => AuthHandler master Html
- createNewAccount :: YesodHmacKeccak db master => NewAccountData -> AuthHandler master (UserAccount db)
- data PWData = PWData {}
- passwordForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m PWData
- passwordWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> ByteString -> ByteString -> WidgetFor master ()
- getVerifyR' :: YesodHmacKeccak db master => ByteString -> AuthHandler master Html
- postVerifyR' :: YesodHmacKeccak db master => ByteString -> AuthHandler master RepJson
- reactivateForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m Username
- reactivateWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master ()
- getReactivateR' :: YesodHmacKeccak db master => AuthHandler master Html
- postReactivateR' :: YesodHmacKeccak db master => AuthHandler master Html
- class UserCredentials u where
- class TokenData t where
- class PersistUserCredentials u where
- class PersistToken t where
- class HmacDB m where
- type UserAccount m
- type TokenFoo m
- class HmacSendMail master where
- data PersistHmacFuncs master user token = PersistHmacFuncs {
- puGet :: Text -> HandlerFor master (Maybe (Entity user))
- puInsert :: Username -> user -> HandlerFor master (Either Text (Entity user))
- puUpdate :: Entity user -> [Update user] -> HandlerFor master ()
- ptGet :: ByteString -> Text -> HandlerFor master (Maybe (Entity token))
- ptInsert :: ByteString -> token -> HandlerFor master (Either Text (Entity token))
- ptUpdate :: Entity token -> [Update token] -> HandlerFor master ()
- ptDelete :: Entity token -> HandlerFor master ()
- newtype HmacPersistDB master user token a = HmacPersistDB (ReaderT (PersistHmacFuncs master user token) (HandlerFor master) a)
- makeRandomToken :: IO Text
- makeRandomSalt :: IO Text
- returnJson :: Monad m => [Pair] -> m RepJson
- returnJsonError :: (ToJSON a, Monad m) => a -> m RepJson
- fromHex :: String -> ByteString
- fromHex' :: String -> ByteString
- toHex :: ByteString -> Text
- hmacKeccak :: ByteString -> ByteString -> ByteString
- runHmacPersistDB :: (PersistEntityBackend token ~ BaseBackend (YesodPersistBackend master), PersistEntityBackend user ~ BaseBackend (YesodPersistBackend master), PersistToken token, PersistEntity token, PersistEntity user, YesodPersist master, PersistUserCredentials user, PersistUniqueWrite (YesodPersistBackend master), YesodHmacKeccak db master, PersistQueryRead (YesodPersistBackend master)) => HmacPersistDB master user token a -> HandlerFor master a
Documentation
class (YesodAuth master, HmacSendMail master, HmacDB db, UserCredentials (UserAccount db), TokenData (TokenFoo db), RenderMessage master FormMessage) => YesodHmacKeccak db master | master -> db where #
main class for defining internals
runHmacDB :: db a -> AuthHandler master a #
function for accessing the database (runDB eqivalent).
can be set to runHmacPersistDB
checkValidUsername :: (MonadHandler m, HandlerSite m ~ master) => Username -> m (Either Text Username) #
function to determine a valid username.
Default: defaultCheckValidUsername
getNewAccountR :: AuthHandler master Html #
Handler for rendering the registration page.
Default: getNewAccountR'
postNewAccountR :: AuthHandler master Html #
Handler for processing registration.
Default: postNewAccountR'
getReactivateR :: AuthHandler master Html #
Handler for rendering reactivation request page.
Default: getReactivateR'
postReactivateR :: AuthHandler master Html #
Handler for processing reactivation requests.
Default: postReactivateR'
renderAccountMessage :: master -> [Text] -> AccountMsg -> Text #
Function for rendering all messages in this plugin.
Default: defaultAccountMsg
rawLoginRoute :: Maybe (Route (HandlerSite (WidgetFor master))) #
Route for providing login without javascript.
Default: Nothing
loginWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master () #
Widget for the login page.
Default: defaultLoginWidget
hmacPlugin :: YesodHmacKeccak db master => AuthPlugin master #
newAccountR :: AuthRoute #
resetPasswordR :: AuthRoute #
defaultLoginWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master () #
Overridable default login widget
defaultCheckValidUsername :: (MonadHandler m, HandlerSite m ~ master, YesodHmacKeccak db master) => Username -> m (Either Text Username) #
Overridable default check for valid usernames
postLoginR' :: (YesodHmacKeccak db master, YesodAuth master) => AuthHandler master RepJson #
newAccountForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m NewAccountData #
newAccountWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master () #
getNewAccountR' :: YesodHmacKeccak db master => AuthHandler master Html #
postNewAccountR' :: YesodHmacKeccak db master => AuthHandler master Html #
createNewAccount :: YesodHmacKeccak db master => NewAccountData -> AuthHandler master (UserAccount db) #
passwordForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m PWData #
passwordWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> ByteString -> ByteString -> WidgetFor master () #
getVerifyR' :: YesodHmacKeccak db master => ByteString -> AuthHandler master Html #
postVerifyR' :: YesodHmacKeccak db master => ByteString -> AuthHandler master RepJson #
reactivateForm :: (YesodHmacKeccak db master, MonadHandler m, HandlerSite m ~ master) => AForm m Username #
reactivateWidget :: YesodHmacKeccak db master => (Route Auth -> Route master) -> WidgetFor master () #
getReactivateR' :: YesodHmacKeccak db master => AuthHandler master Html #
postReactivateR' :: YesodHmacKeccak db master => AuthHandler master Html #
class UserCredentials u where #
Class for providing user credentials to the plugin. A user type is required to have all these fields.
userUserName :: u -> Username #
userUserSalt :: u -> ByteString #
userUserSalted :: u -> ByteString #
userUserEmail :: u -> Text #
userUserActive :: u -> Bool #
Class for providing tokens for user activation.
tokenTokenKind :: t -> Text #
tokenTokenUsername :: t -> Username #
tokenTokenToken :: t -> ByteString #
class PersistUserCredentials u where #
Class for defining the accessor functions of the database for users
userUsernameF, userUserSaltF, userUserSaltedF, userUserEmailF, userUserActiveF, uniqueUsername, userCreate
userUsernameF :: EntityField u Username #
userUserSaltF :: EntityField u ByteString #
userUserSaltedF :: EntityField u ByteString #
userUserEmailF :: EntityField u Text #
userUserActiveF :: EntityField u Bool #
uniqueUsername :: Text -> Unique u #
:: Username | User name |
-> Text | |
-> ByteString | User salt |
-> u |
create a new user ready for activation from provided data
class PersistToken t where #
Class for defining the accessor functions of the database for tokens
tokenTokenTokenF :: EntityField t ByteString #
tokenTokenKindF :: EntityField t Text #
tokenTokenUsernameF :: EntityField t Username #
uniqueToken :: ByteString -> Unique t #
:: ByteString | actual Token |
-> Username | User name |
-> Text | Token kind |
-> t |
create a new token from provided data
This class lets you define you own database behaviour, but it comes pre- defined with sane defaults.
type UserAccount m #
loadUser :: Username -> m (Maybe (UserAccount m)) #
addNewUser :: Username -> Text -> ByteString -> m (Either Text (UserAccount m)) #
activateUser :: UserAccount m -> ByteString -> m () #
loadToken :: ByteString -> Text -> m (Maybe (TokenFoo m)) #
insertToken :: ByteString -> Username -> Text -> m (Either Text (TokenFoo m)) #
deleteToken :: TokenFoo m -> m () #
insertLoginToken :: ByteString -> Username -> m (Either Text (TokenFoo m)) #
loadLoginToken :: ByteString -> m (Maybe (TokenFoo m)) #
insertActivateToken :: ByteString -> Username -> m (Either Text (TokenFoo m)) #
loadActivateToken :: ByteString -> m (Maybe (TokenFoo m)) #
(Yesod master, PersistUserCredentials user, PersistToken token) => HmacDB (HmacPersistDB master user token) # | |
class HmacSendMail master where #
sendVerifyEmail :: Username -> Text -> Text -> AuthHandler master () #
sendReactivateEmail :: Username -> Text -> Text -> AuthHandler master () #
data PersistHmacFuncs master user token #
PersistHmacFuncs | |
|
newtype HmacPersistDB master user token a #
HmacPersistDB (ReaderT (PersistHmacFuncs master user token) (HandlerFor master) a) |
Monad (HmacPersistDB master user token) # | |
Functor (HmacPersistDB master user token) # | |
Applicative (HmacPersistDB master user token) # | |
MonadIO (HmacPersistDB master user token) # | |
(Yesod master, PersistUserCredentials user, PersistToken token) => HmacDB (HmacPersistDB master user token) # | |
type UserAccount (HmacPersistDB master user token) # | |
type TokenFoo (HmacPersistDB master user token) # | |
makeRandomToken :: IO Text #
makeRandomSalt :: IO Text #
returnJson :: Monad m => [Pair] -> m RepJson #
returnJsonError :: (ToJSON a, Monad m) => a -> m RepJson #
hmacKeccak :: ByteString -> ByteString -> ByteString #
runHmacPersistDB :: (PersistEntityBackend token ~ BaseBackend (YesodPersistBackend master), PersistEntityBackend user ~ BaseBackend (YesodPersistBackend master), PersistToken token, PersistEntity token, PersistEntity user, YesodPersist master, PersistUserCredentials user, PersistUniqueWrite (YesodPersistBackend master), YesodHmacKeccak db master, PersistQueryRead (YesodPersistBackend master)) => HmacPersistDB master user token a -> HandlerFor master a #
Orphan instances
YesodHmacKeccak db master => RenderMessage master AccountMsg # | |