yesod-auth-hmac-keccak-0.0.0.5: An account authentication plugin for yesod with encrypted token transfer.

Safe HaskellNone
LanguageHaskell2010

Yesod.Auth.HmacKeccak

Contents

Synopsis

Documentation

type Username = Text #

type alias

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

Minimal complete definition

runHmacDB

Methods

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 #

verifyR :: ByteString -> AuthRoute #

resetPasswordR :: AuthRoute #

loginR :: 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 #

data NewAccountData #

Constructors

NewAccountData 

Fields

Instances

Show NewAccountData # 

Methods

showsPrec :: Int -> NewAccountData -> ShowS

show :: NewAccountData -> String

showList :: [NewAccountData] -> ShowS

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 #

Constructors

PWData 

Fields

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.

Methods

userUserName :: u -> Username #

userUserSalt :: u -> ByteString #

userUserSalted :: u -> ByteString #

userUserEmail :: u -> Text #

userUserActive :: u -> Bool #

class TokenData t where #

Class for providing tokens for user activation.

Methods

tokenTokenKind :: t -> Text #

tokenTokenUsername :: t -> Username #

tokenTokenToken :: t -> ByteString #

class PersistUserCredentials u where #

Class for defining the accessor functions of the database for users

Methods

userUsernameF :: EntityField u Username #

userUserSaltF :: EntityField u ByteString #

userUserSaltedF :: EntityField u ByteString #

userUserEmailF :: EntityField u Text #

userUserActiveF :: EntityField u Bool #

uniqueUsername :: Text -> Unique u #

userCreate #

Arguments

:: Username

User name

-> Text

Email

-> 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

Methods

tokenTokenTokenF :: EntityField t ByteString #

tokenTokenKindF :: EntityField t Text #

tokenTokenUsernameF :: EntityField t Username #

uniqueToken :: ByteString -> Unique t #

tokenCreate #

Arguments

:: ByteString

actual Token

-> Username

User name

-> Text

Token kind

-> t 

create a new token from provided data

class HmacDB m where #

This class lets you define you own database behaviour, but it comes pre- defined with sane defaults.

Associated Types

type UserAccount m #

type TokenFoo m #

Methods

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)) #

Instances

(Yesod master, PersistUserCredentials user, PersistToken token) => HmacDB (HmacPersistDB master user token) # 

Associated Types

type UserAccount (HmacPersistDB master user token :: * -> *) :: * #

type TokenFoo (HmacPersistDB master user token :: * -> *) :: * #

Methods

loadUser :: Username -> HmacPersistDB master user token (Maybe (UserAccount (HmacPersistDB master user token))) #

addNewUser :: Username -> Text -> ByteString -> HmacPersistDB master user token (Either Text (UserAccount (HmacPersistDB master user token))) #

activateUser :: UserAccount (HmacPersistDB master user token) -> ByteString -> HmacPersistDB master user token () #

loadToken :: ByteString -> Text -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

insertToken :: ByteString -> Username -> Text -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

deleteToken :: TokenFoo (HmacPersistDB master user token) -> HmacPersistDB master user token () #

insertLoginToken :: ByteString -> Username -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

loadLoginToken :: ByteString -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

insertActivateToken :: ByteString -> Username -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

loadActivateToken :: ByteString -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

class HmacSendMail master where #

Minimal complete definition

sendVerifyEmail, sendReactivateEmail

Methods

sendVerifyEmail :: Username -> Text -> Text -> AuthHandler master () #

sendReactivateEmail :: Username -> Text -> Text -> AuthHandler master () #

data PersistHmacFuncs master user token #

Constructors

PersistHmacFuncs 

Fields

  • 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 #

Constructors

HmacPersistDB (ReaderT (PersistHmacFuncs master user token) (HandlerFor master) a) 

Instances

Monad (HmacPersistDB master user token) # 

Methods

(>>=) :: HmacPersistDB master user token a -> (a -> HmacPersistDB master user token b) -> HmacPersistDB master user token b

(>>) :: HmacPersistDB master user token a -> HmacPersistDB master user token b -> HmacPersistDB master user token b

return :: a -> HmacPersistDB master user token a

fail :: String -> HmacPersistDB master user token a

Functor (HmacPersistDB master user token) # 

Methods

fmap :: (a -> b) -> HmacPersistDB master user token a -> HmacPersistDB master user token b

(<$) :: a -> HmacPersistDB master user token b -> HmacPersistDB master user token a

Applicative (HmacPersistDB master user token) # 

Methods

pure :: a -> HmacPersistDB master user token a

(<*>) :: HmacPersistDB master user token (a -> b) -> HmacPersistDB master user token a -> HmacPersistDB master user token b

liftA2 :: (a -> b -> c) -> HmacPersistDB master user token a -> HmacPersistDB master user token b -> HmacPersistDB master user token c

(*>) :: HmacPersistDB master user token a -> HmacPersistDB master user token b -> HmacPersistDB master user token b

(<*) :: HmacPersistDB master user token a -> HmacPersistDB master user token b -> HmacPersistDB master user token a

MonadIO (HmacPersistDB master user token) # 

Methods

liftIO :: IO a -> HmacPersistDB master user token a

(Yesod master, PersistUserCredentials user, PersistToken token) => HmacDB (HmacPersistDB master user token) # 

Associated Types

type UserAccount (HmacPersistDB master user token :: * -> *) :: * #

type TokenFoo (HmacPersistDB master user token :: * -> *) :: * #

Methods

loadUser :: Username -> HmacPersistDB master user token (Maybe (UserAccount (HmacPersistDB master user token))) #

addNewUser :: Username -> Text -> ByteString -> HmacPersistDB master user token (Either Text (UserAccount (HmacPersistDB master user token))) #

activateUser :: UserAccount (HmacPersistDB master user token) -> ByteString -> HmacPersistDB master user token () #

loadToken :: ByteString -> Text -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

insertToken :: ByteString -> Username -> Text -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

deleteToken :: TokenFoo (HmacPersistDB master user token) -> HmacPersistDB master user token () #

insertLoginToken :: ByteString -> Username -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

loadLoginToken :: ByteString -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

insertActivateToken :: ByteString -> Username -> HmacPersistDB master user token (Either Text (TokenFoo (HmacPersistDB master user token))) #

loadActivateToken :: ByteString -> HmacPersistDB master user token (Maybe (TokenFoo (HmacPersistDB master user token))) #

type UserAccount (HmacPersistDB master user token) # 
type UserAccount (HmacPersistDB master user token) = Entity user
type TokenFoo (HmacPersistDB master user token) # 
type TokenFoo (HmacPersistDB master user token) = Entity token

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 #

Orphan instances

YesodHmacKeccak db master => RenderMessage master AccountMsg # 

Methods

renderMessage :: master -> [Lang] -> AccountMsg -> Text