polysemy-account-0.1.0.0: lib/Polysemy/Account/Effect/Password.hs
-- | Description: Password effect
module Polysemy.Account.Effect.Password where
import Polysemy.Account.Data.GeneratedPassword (GeneratedPassword)
import Polysemy.Account.Data.HashedPassword (HashedPassword)
import Polysemy.Account.Data.RawPassword (RawPassword)
-- | This effect provides password hashing, validation, and generation.
data Password :: Effect where
-- | Hash a clear text password.
Hash :: RawPassword -> Password m HashedPassword
-- | Validate a password against a hash.
Check :: RawPassword -> HashedPassword -> Password m Bool
-- | Generate a new clear text password of the specified length.
Generate :: Word -> Password m GeneratedPassword
makeSem ''Password