content: {-# LANGUAGE ExistentialQuantification #-}
  {-# LANGUAGE OverloadedStrings         #-}
  
  ------------------------------------------------------------------------------
  -- |
  --
  -- This module contains all the central authentication functionality.
  --
  -- It exports a number of high-level functions to be used directly in your
  -- application handlers.
  --
  -- We also export a number of mid-level functions that should be helpful when
  -- you are integrating with another way of confirming the authentication of
  -- login requests.
  --
  
  module Snap.Snaplet.Auth
    (
    -- * Higher Level Handler Functions
      createUser
    , usernameExists
    , saveUser
    , destroyUser
    , loginByUsername
    , loginByRememberToken
    , forceLogin
    , logout
    , currentUser
    , isLoggedIn
  
    -- * Lower Level Functions
    , markAuthSuccess
    , markAuthFail
    , checkPasswordAndLogin
  
    -- * Types
    , AuthManager(..)
    , IAuthBackend(..)
    , AuthSettings(..)
    , defAuthSettings
    , AuthUser(..)
    , defAuthUser
    , UserId(..)
    , Password(..)
    , AuthFailure(..)
    , Role(..)
  
    -- * Other Utilities
    , authSettingsFromConfig
    , withBackend
    , encryptPassword
    , checkPassword
    , authenticatePassword
    , setPassword
    , encrypt
    , verify
  
    -- * Handlers
    , registerUser
    , loginUser
    , logoutUser
    , requireUser
    , setPasswordResetToken
    , clearPasswordResetToken
  
    -- * Splice helpers
    , addAuthSplices
    , compiledAuthSplices
    , userCSplices
    , userISplices
    , ifLoggedIn
    , ifLoggedOut
    , loggedInUser
    )
    where
  
  ------------------------------------------------------------------------------
  import Snap.Snaplet.Auth.AuthManager
  import Snap.Snaplet.Auth.Handlers
  import Snap.Snaplet.Auth.SpliceHelpers
  import Snap.Snaplet.Auth.Types
  
  