-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Happstack Authentication Library -- -- A themeable authentication library with support for username+password -- and OpenId. @package happstack-authenticate @version 2.4.0.2 module Happstack.Authenticate.Core -- | Various configuration options that apply to all authentication methods data AuthenticateConfig AuthenticateConfig :: (UserId -> IO Bool) -> (Username -> Maybe CoreError) -> Bool -> Maybe SimpleAddress -> Maybe SimpleAddress -> Maybe FilePath -> AuthenticateConfig -- | can user administrate the authentication system? [_isAuthAdmin] :: AuthenticateConfig -> UserId -> IO Bool -- | enforce username policies, valid email, etc. Nothing == ok, -- 'Just Text' == error message [_usernameAcceptable] :: AuthenticateConfig -> Username -> Maybe CoreError -- | require use to supply an email address when creating an account [_requireEmail] :: AuthenticateConfig -> Bool -- | From: line for emails sent by the server [_systemFromAddress] :: AuthenticateConfig -> Maybe SimpleAddress -- | Reply-To: line for emails sent by the server [_systemReplyToAddress] :: AuthenticateConfig -> Maybe SimpleAddress -- | path to sendmail if it is not /usr/sbin/sendmail [_systemSendmailPath] :: AuthenticateConfig -> Maybe FilePath isAuthAdmin :: Lens' AuthenticateConfig (UserId -> IO Bool) usernameAcceptable :: Lens' AuthenticateConfig (Username -> Maybe CoreError) requireEmail :: Lens' AuthenticateConfig Bool data HappstackAuthenticateI18N HappstackAuthenticateI18N :: HappstackAuthenticateI18N -- | a UserId uniquely identifies a user. newtype UserId UserId :: Integer -> UserId [_unUserId] :: UserId -> Integer unUserId :: Functor f => (Integer -> f Integer) -> UserId -> f UserId rUserId :: () => Boomerang e tok (Integer :- r) (UserId :- r) -- | get the next UserId succUserId :: UserId -> UserId -- | when creating JSON field names, drop the first character. Since we are -- using lens, the leading character should always be _. jsonOptions :: Options -- | convert a value to a JSON encoded Response toJSONResponse :: (RenderMessage HappstackAuthenticateI18N e, ToJSON a) => Either e a -> Response -- | convert a value to a JSON encoded Response toJSONSuccess :: ToJSON a => a -> Response -- | convert an error to a JSON encoded Response -- -- FIXME: I18N toJSONError :: forall e. RenderMessage HappstackAuthenticateI18N e => e -> Response -- | an arbitrary, but unique string that the user uses to identify -- themselves newtype Username Username :: Text -> Username [_unUsername] :: Username -> Text unUsername :: Iso' Username Text rUsername :: forall tok e r. Boomerang e tok ((:-) Text r) ((:-) Username r) -- | a very basic policy for userAcceptable -- -- Enforces: -- -- Username can not be empty usernamePolicy :: Username -> Maybe CoreError -- | an Email address. No validation in performed. newtype Email Email :: Text -> Email [_unEmail] :: Email -> Text unEmail :: Iso' Email Text -- | A unique User data User User :: UserId -> Username -> Maybe Email -> User [_userId] :: User -> UserId [_username] :: User -> Username [_email] :: User -> Maybe Email userId :: Lens' User UserId username :: Lens' User Username email :: Lens' User (Maybe Email) type UserIxs = '[UserId, Username, Email] type IxUser = IxSet UserIxs User -- | The shared secret is used to encrypt a users data on a per-user basis. -- We can invalidate a JWT value by changing the shared secret. newtype SharedSecret SharedSecret :: Text -> SharedSecret [_unSharedSecret] :: SharedSecret -> Text unSharedSecret :: Iso' SharedSecret Text data SimpleAddress SimpleAddress :: Maybe Text -> Email -> SimpleAddress [_saName] :: SimpleAddress -> Maybe Text [_saEmail] :: SimpleAddress -> Email -- | Generate a Salt from 128 bits of data from -- /dev/urandom, with the system RNG as a fallback. This is the -- function used to generate salts by makePassword. genSharedSecret :: MonadIO m => m SharedSecret -- | Generate a SharedSecret from /dev/urandom. -- -- see: genSharedSecret genSharedSecretDevURandom :: IO SharedSecret -- | Generate a SharedSecret from Random. -- -- see: genSharedSecret genSharedSecretSysRandom :: IO SharedSecret -- | A map which stores the SharedSecret for each UserId type SharedSecrets = Map UserId SharedSecret -- | An empty SharedSecrets initialSharedSecrets :: SharedSecrets -- | the CoreError type is used to represent errors in a language -- agnostic manner. The errors are translated into human readable form -- via the I18N translations. data CoreError HandlerNotFound :: CoreError URLDecodeFailed :: CoreError UsernameAlreadyExists :: CoreError AuthorizationRequired :: CoreError Forbidden :: CoreError JSONDecodeFailed :: CoreError InvalidUserId :: CoreError UsernameNotAcceptable :: CoreError InvalidEmail :: CoreError TextError :: Text -> CoreError -- | This value is used to configure the type of new user registrations -- permitted for this system. data NewAccountMode -- | new users can create their own accounts OpenRegistration :: NewAccountMode -- | new users can apply to create their own accounts, but a moderator must -- approve them before they are active ModeratedRegistration :: NewAccountMode -- | only the admin can create a new account ClosedRegistration :: NewAccountMode -- | this acid-state value contains the state common to all authentication -- methods data AuthenticateState AuthenticateState :: SharedSecrets -> IxUser -> UserId -> Int -> NewAccountMode -> AuthenticateState [_sharedSecrets] :: AuthenticateState -> SharedSecrets [_users] :: AuthenticateState -> IxUser [_nextUserId] :: AuthenticateState -> UserId -- | default session time out in seconds [_defaultSessionTimeout] :: AuthenticateState -> Int [_newAccountMode] :: AuthenticateState -> NewAccountMode sharedSecrets :: Lens' AuthenticateState SharedSecrets users :: Lens' AuthenticateState IxUser nextUserId :: Lens' AuthenticateState UserId defaultSessionTimeout :: Lens' AuthenticateState Int newAccountMode :: Lens' AuthenticateState NewAccountMode -- | a reasonable initial AuthenticateState initialAuthenticateState :: AuthenticateState data SetSharedSecret SetSharedSecret :: UserId -> SharedSecret -> SetSharedSecret newtype GetSharedSecret GetSharedSecret :: UserId -> GetSharedSecret newtype SetDefaultSessionTimeout SetDefaultSessionTimeout :: Int -> SetDefaultSessionTimeout data GetDefaultSessionTimeout GetDefaultSessionTimeout :: GetDefaultSessionTimeout newtype SetNewAccountMode SetNewAccountMode :: NewAccountMode -> SetNewAccountMode data GetNewAccountMode GetNewAccountMode :: GetNewAccountMode newtype CreateUser CreateUser :: User -> CreateUser data CreateAnonymousUser CreateAnonymousUser :: CreateAnonymousUser newtype UpdateUser UpdateUser :: User -> UpdateUser newtype DeleteUser DeleteUser :: UserId -> DeleteUser newtype GetUserByUsername GetUserByUsername :: Username -> GetUserByUsername newtype GetUserByUserId GetUserByUserId :: UserId -> GetUserByUserId newtype GetUserByEmail GetUserByEmail :: Email -> GetUserByEmail data GetAuthenticateState GetAuthenticateState :: GetAuthenticateState -- | get the SharedSecret for UserId. Generate one if they -- don't have one yet. getOrGenSharedSecret :: MonadIO m => AcidState AuthenticateState -> UserId -> m SharedSecret -- | The Token type represents the encrypted data used to identify a -- user. data Token Token :: User -> Bool -> Token [_tokenUser] :: Token -> User [_tokenIsAuthAdmin] :: Token -> Bool tokenUser :: Lens' Token User tokenIsAuthAdmin :: Lens' Token Bool -- | TokenText is the encrypted form of the Token which is -- passed between the server and the client. type TokenText = Text -- | create a Token for User -- -- The isAuthAdmin paramater is a function which will be called -- to determine if UserId is a user who should be given -- Administrator privileges. This includes the ability to things such as -- set the OpenId realm, change the registeration mode, etc. issueToken :: MonadIO m => AcidState AuthenticateState -> AuthenticateConfig -> User -> m TokenText -- | decode and verify the TokenText. If successful, return the -- Token otherwise Nothing. decodeAndVerifyToken :: MonadIO m => AcidState AuthenticateState -> UTCTime -> TokenText -> m (Maybe (Token, JWT VerifiedJWT)) -- | name of the Cookie used to hold the TokenText authCookieName :: String -- | create a Token for User and add a Cookie to the -- Response -- -- see also: issueToken addTokenCookie :: Happstack m => AcidState AuthenticateState -> AuthenticateConfig -> User -> m TokenText -- | delete the Token Cookie deleteTokenCookie :: Happstack m => m () -- | get, decode, and verify the Token from the Cookie. getTokenCookie :: Happstack m => AcidState AuthenticateState -> m (Maybe (Token, JWT VerifiedJWT)) -- | get, decode, and verify the Token from the -- Authorization HTTP header getTokenHeader :: Happstack m => AcidState AuthenticateState -> m (Maybe (Token, JWT VerifiedJWT)) -- | get, decode, and verify the Token looking first in the -- Authorization header and then in Cookie. -- -- see also: getTokenHeader, getTokenCookie getToken :: Happstack m => AcidState AuthenticateState -> m (Maybe (Token, JWT VerifiedJWT)) -- | get the UserId -- -- calls getToken but returns only the UserId getUserId :: Happstack m => AcidState AuthenticateState -> m (Maybe UserId) -- | AuthenticationMethod is used by the routing system to select -- which authentication backend should handle this request. newtype AuthenticationMethod AuthenticationMethod :: Text -> AuthenticationMethod [_unAuthenticationMethod] :: AuthenticationMethod -> Text unAuthenticationMethod :: Iso' AuthenticationMethod Text rAuthenticationMethod :: forall tok e r. Boomerang e tok ((:-) Text r) ((:-) AuthenticationMethod r) type AuthenticationHandler = [Text] -> RouteT AuthenticateURL (ServerPartT IO) Response type AuthenticationHandlers = Map AuthenticationMethod AuthenticationHandler data AuthenticateURL AuthenticationMethods :: Maybe (AuthenticationMethod, [Text]) -> AuthenticateURL Controllers :: AuthenticateURL rAuthenticationMethods :: forall tok e r. Boomerang e tok ((:-) (Maybe (AuthenticationMethod, [Text])) r) ((:-) AuthenticateURL r) rControllers :: forall tok e r. Boomerang e tok r ((:-) AuthenticateURL r) systemFromAddress :: Lens' AuthenticateConfig (Maybe SimpleAddress) systemReplyToAddress :: Lens' AuthenticateConfig (Maybe SimpleAddress) systemSendmailPath :: Lens' AuthenticateConfig (Maybe FilePath) -- | a Router for AuthenicateURL authenticateURL :: Router () (AuthenticateURL :- ()) -- | helper function which converts a URL for an authentication backend -- into an AuthenticateURL. nestAuthenticationMethod :: PathInfo methodURL => AuthenticationMethod -> RouteT methodURL m a -> RouteT AuthenticateURL m a instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Core.AuthenticateURL instance GHC.Generics.Generic Happstack.Authenticate.Core.AuthenticateURL instance Data.Data.Data Happstack.Authenticate.Core.AuthenticateURL instance GHC.Show.Show Happstack.Authenticate.Core.AuthenticateURL instance GHC.Read.Read Happstack.Authenticate.Core.AuthenticateURL instance GHC.Classes.Ord Happstack.Authenticate.Core.AuthenticateURL instance GHC.Classes.Eq Happstack.Authenticate.Core.AuthenticateURL instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.AuthenticationMethod instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.AuthenticationMethod instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.AuthenticationMethod instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Core.AuthenticationMethod instance GHC.Generics.Generic Happstack.Authenticate.Core.AuthenticationMethod instance Data.Data.Data Happstack.Authenticate.Core.AuthenticationMethod instance GHC.Show.Show Happstack.Authenticate.Core.AuthenticationMethod instance GHC.Read.Read Happstack.Authenticate.Core.AuthenticationMethod instance GHC.Classes.Ord Happstack.Authenticate.Core.AuthenticationMethod instance GHC.Classes.Eq Happstack.Authenticate.Core.AuthenticationMethod instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.Token instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.Token instance GHC.Generics.Generic Happstack.Authenticate.Core.Token instance Data.Data.Data Happstack.Authenticate.Core.Token instance GHC.Show.Show Happstack.Authenticate.Core.Token instance GHC.Read.Read Happstack.Authenticate.Core.Token instance GHC.Classes.Ord Happstack.Authenticate.Core.Token instance GHC.Classes.Eq Happstack.Authenticate.Core.Token instance Data.Acid.Common.IsAcidic Happstack.Authenticate.Core.AuthenticateState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetAuthenticateState instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetAuthenticateState instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetAuthenticateState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetUserByEmail instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetUserByEmail instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetUserByEmail instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetUserByUserId instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetUserByUserId instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetUserByUserId instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetUserByUsername instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetUserByUsername instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetUserByUsername instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.DeleteUser instance Data.Acid.Core.Method Happstack.Authenticate.Core.DeleteUser instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.DeleteUser instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.UpdateUser instance Data.Acid.Core.Method Happstack.Authenticate.Core.UpdateUser instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.UpdateUser instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.CreateAnonymousUser instance Data.Acid.Core.Method Happstack.Authenticate.Core.CreateAnonymousUser instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.CreateAnonymousUser instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.CreateUser instance Data.Acid.Core.Method Happstack.Authenticate.Core.CreateUser instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.CreateUser instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetNewAccountMode instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetNewAccountMode instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetNewAccountMode instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.SetNewAccountMode instance Data.Acid.Core.Method Happstack.Authenticate.Core.SetNewAccountMode instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.SetNewAccountMode instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetSharedSecret instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetSharedSecret instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetSharedSecret instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.SetSharedSecret instance Data.Acid.Core.Method Happstack.Authenticate.Core.SetSharedSecret instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.SetSharedSecret instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.GetDefaultSessionTimeout instance Data.Acid.Core.Method Happstack.Authenticate.Core.GetDefaultSessionTimeout instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Core.GetDefaultSessionTimeout instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.SetDefaultSessionTimeout instance Data.Acid.Core.Method Happstack.Authenticate.Core.SetDefaultSessionTimeout instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Core.SetDefaultSessionTimeout instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.AuthenticateState instance GHC.Generics.Generic Happstack.Authenticate.Core.AuthenticateState instance GHC.Show.Show Happstack.Authenticate.Core.AuthenticateState instance GHC.Classes.Eq Happstack.Authenticate.Core.AuthenticateState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.NewAccountMode instance GHC.Generics.Generic Happstack.Authenticate.Core.NewAccountMode instance GHC.Show.Show Happstack.Authenticate.Core.NewAccountMode instance GHC.Classes.Eq Happstack.Authenticate.Core.NewAccountMode instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.SharedSecret instance GHC.Generics.Generic Happstack.Authenticate.Core.SharedSecret instance Data.Data.Data Happstack.Authenticate.Core.SharedSecret instance GHC.Show.Show Happstack.Authenticate.Core.SharedSecret instance GHC.Read.Read Happstack.Authenticate.Core.SharedSecret instance GHC.Classes.Ord Happstack.Authenticate.Core.SharedSecret instance GHC.Classes.Eq Happstack.Authenticate.Core.SharedSecret instance GHC.Generics.Generic Happstack.Authenticate.Core.AuthenticateConfig instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.SimpleAddress instance GHC.Generics.Generic Happstack.Authenticate.Core.SimpleAddress instance Data.Data.Data Happstack.Authenticate.Core.SimpleAddress instance GHC.Show.Show Happstack.Authenticate.Core.SimpleAddress instance GHC.Read.Read Happstack.Authenticate.Core.SimpleAddress instance GHC.Classes.Ord Happstack.Authenticate.Core.SimpleAddress instance GHC.Classes.Eq Happstack.Authenticate.Core.SimpleAddress instance Data.IxSet.Typed.Indexable Happstack.Authenticate.Core.UserIxs Happstack.Authenticate.Core.User instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.User instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.User instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.User instance GHC.Generics.Generic Happstack.Authenticate.Core.User instance Data.Data.Data Happstack.Authenticate.Core.User instance GHC.Show.Show Happstack.Authenticate.Core.User instance GHC.Read.Read Happstack.Authenticate.Core.User instance GHC.Classes.Ord Happstack.Authenticate.Core.User instance GHC.Classes.Eq Happstack.Authenticate.Core.User instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.Email instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.Email instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Core.Email instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.Email instance GHC.Generics.Generic Happstack.Authenticate.Core.Email instance Data.Data.Data Happstack.Authenticate.Core.Email instance GHC.Show.Show Happstack.Authenticate.Core.Email instance GHC.Read.Read Happstack.Authenticate.Core.Email instance GHC.Classes.Ord Happstack.Authenticate.Core.Email instance GHC.Classes.Eq Happstack.Authenticate.Core.Email instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.Username instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.Username instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Core.Username instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.Username instance GHC.Generics.Generic Happstack.Authenticate.Core.Username instance Data.Data.Data Happstack.Authenticate.Core.Username instance GHC.Show.Show Happstack.Authenticate.Core.Username instance GHC.Read.Read Happstack.Authenticate.Core.Username instance GHC.Classes.Ord Happstack.Authenticate.Core.Username instance GHC.Classes.Eq Happstack.Authenticate.Core.Username instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.JSONResponse instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.JSONResponse instance GHC.Generics.Generic Happstack.Authenticate.Core.JSONResponse instance Data.Data.Data Happstack.Authenticate.Core.JSONResponse instance GHC.Show.Show Happstack.Authenticate.Core.JSONResponse instance GHC.Read.Read Happstack.Authenticate.Core.JSONResponse instance GHC.Classes.Eq Happstack.Authenticate.Core.JSONResponse instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.Status instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.Status instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.Status instance GHC.Generics.Generic Happstack.Authenticate.Core.Status instance Data.Data.Data Happstack.Authenticate.Core.Status instance GHC.Show.Show Happstack.Authenticate.Core.Status instance GHC.Read.Read Happstack.Authenticate.Core.Status instance GHC.Classes.Ord Happstack.Authenticate.Core.Status instance GHC.Classes.Eq Happstack.Authenticate.Core.Status instance Text.Shakespeare.I18N.RenderMessage Happstack.Authenticate.Core.HappstackAuthenticateI18N Happstack.Authenticate.Core.CoreError instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Core.CoreError instance GHC.Generics.Generic Happstack.Authenticate.Core.CoreError instance Data.Data.Data Happstack.Authenticate.Core.CoreError instance GHC.Show.Show Happstack.Authenticate.Core.CoreError instance GHC.Read.Read Happstack.Authenticate.Core.CoreError instance GHC.Classes.Ord Happstack.Authenticate.Core.CoreError instance GHC.Classes.Eq Happstack.Authenticate.Core.CoreError instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Core.CoreError instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Core.CoreError instance Language.Javascript.JMacro.Base.ToJExpr Happstack.Authenticate.Core.CoreError module Happstack.Authenticate.Controller authenticateCtrl :: Monad m => RouteT AuthenticateURL m JStat authenticateCtrlJs :: (AuthenticateURL -> [(Text, Maybe Text)] -> Text) -> JStat module Happstack.Authenticate.OpenId.PartialsURL data PartialURL UsingYahoo :: PartialURL RealmForm :: PartialURL rRealmForm :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rUsingYahoo :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) partialURL :: Router () (PartialURL :- ()) instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance GHC.Show.Show Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance GHC.Read.Read Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance GHC.Generics.Generic Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance Data.Data.Data Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance GHC.Classes.Ord Happstack.Authenticate.OpenId.PartialsURL.PartialURL instance GHC.Classes.Eq Happstack.Authenticate.OpenId.PartialsURL.PartialURL module Happstack.Authenticate.OpenId.URL openIdAuthenticationMethod :: AuthenticationMethod data OpenIdURL Partial :: PartialURL -> OpenIdURL BeginDance :: Text -> OpenIdURL ReturnTo :: OpenIdURL Realm :: OpenIdURL rRealm :: forall tok e r. Boomerang e tok r ((:-) OpenIdURL r) rReturnTo :: forall tok e r. Boomerang e tok r ((:-) OpenIdURL r) rBeginDance :: forall tok e r. Boomerang e tok ((:-) Text r) ((:-) OpenIdURL r) rPartial :: forall tok e r. Boomerang e tok ((:-) PartialURL r) ((:-) OpenIdURL r) openIdURL :: Router () (OpenIdURL :- ()) nestOpenIdURL :: RouteT OpenIdURL m a -> RouteT AuthenticateURL m a instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.OpenId.URL.OpenIdURL instance GHC.Show.Show Happstack.Authenticate.OpenId.URL.OpenIdURL instance GHC.Read.Read Happstack.Authenticate.OpenId.URL.OpenIdURL instance GHC.Generics.Generic Happstack.Authenticate.OpenId.URL.OpenIdURL instance Data.Data.Data Happstack.Authenticate.OpenId.URL.OpenIdURL instance GHC.Classes.Ord Happstack.Authenticate.OpenId.URL.OpenIdURL instance GHC.Classes.Eq Happstack.Authenticate.OpenId.URL.OpenIdURL module Happstack.Authenticate.OpenId.Core data OpenIdError UnknownIdentifier :: OpenIdError CoreError :: CoreError -> OpenIdError [openIdErrorMessageE] :: OpenIdError -> CoreError data OpenIdState_1 OpenIdState_1 :: Map Identifier UserId -> OpenIdState_1 [_identifiers_1] :: OpenIdState_1 -> Map Identifier UserId identifiers_1 :: Iso' OpenIdState_1 (Map Identifier UserId) data OpenIdState OpenIdState :: Map Identifier UserId -> Maybe Text -> OpenIdState [_identifiers] :: OpenIdState -> Map Identifier UserId [_openIdRealm] :: OpenIdState -> Maybe Text openIdRealm :: Lens' OpenIdState (Maybe Text) identifiers :: Lens' OpenIdState (Map Identifier UserId) initialOpenIdState :: OpenIdState identifierToUserId :: Identifier -> Query OpenIdState (Maybe UserId) associateIdentifierWithUserId :: Identifier -> UserId -> Update OpenIdState () -- | Get the OpenId realm to use for authentication getOpenIdRealm :: Query OpenIdState (Maybe Text) -- | set the realm used for OpenId Authentication -- -- IMPORTANT: Changing this value after users have registered is likely -- to invalidate existing OpenId tokens resulting in users no longer -- being able to access their old accounts. setOpenIdRealm :: Maybe Text -> Update OpenIdState () newtype IdentifierToUserId IdentifierToUserId :: Identifier -> IdentifierToUserId data AssociateIdentifierWithUserId AssociateIdentifierWithUserId :: Identifier -> UserId -> AssociateIdentifierWithUserId data GetOpenIdRealm GetOpenIdRealm :: GetOpenIdRealm newtype SetOpenIdRealm SetOpenIdRealm :: Maybe Text -> SetOpenIdRealm data SetRealmData SetRealmData :: Maybe Text -> SetRealmData [_srOpenIdRealm] :: SetRealmData -> Maybe Text srOpenIdRealm :: Iso' SetRealmData (Maybe Text) realm :: Happstack m => AcidState AuthenticateState -> AcidState OpenIdState -> m Response getIdentifier :: Happstack m => m Identifier token :: (Alternative m, Happstack m) => AcidState AuthenticateState -> AuthenticateConfig -> AcidState OpenIdState -> m Response instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.OpenId.Core.SetRealmData instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.OpenId.Core.SetRealmData instance GHC.Generics.Generic Happstack.Authenticate.OpenId.Core.SetRealmData instance Data.Data.Data Happstack.Authenticate.OpenId.Core.SetRealmData instance GHC.Show.Show Happstack.Authenticate.OpenId.Core.SetRealmData instance GHC.Read.Read Happstack.Authenticate.OpenId.Core.SetRealmData instance GHC.Classes.Ord Happstack.Authenticate.OpenId.Core.SetRealmData instance GHC.Classes.Eq Happstack.Authenticate.OpenId.Core.SetRealmData instance Data.Acid.Common.IsAcidic Happstack.Authenticate.OpenId.Core.OpenIdState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.SetOpenIdRealm instance Data.Acid.Core.Method Happstack.Authenticate.OpenId.Core.SetOpenIdRealm instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.OpenId.Core.SetOpenIdRealm instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.GetOpenIdRealm instance Data.Acid.Core.Method Happstack.Authenticate.OpenId.Core.GetOpenIdRealm instance Data.Acid.Common.QueryEvent Happstack.Authenticate.OpenId.Core.GetOpenIdRealm instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.AssociateIdentifierWithUserId instance Data.Acid.Core.Method Happstack.Authenticate.OpenId.Core.AssociateIdentifierWithUserId instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.OpenId.Core.AssociateIdentifierWithUserId instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.IdentifierToUserId instance Data.Acid.Core.Method Happstack.Authenticate.OpenId.Core.IdentifierToUserId instance Data.Acid.Common.QueryEvent Happstack.Authenticate.OpenId.Core.IdentifierToUserId instance Data.SafeCopy.SafeCopy.Migrate Happstack.Authenticate.OpenId.Core.OpenIdState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.OpenIdState instance GHC.Generics.Generic Happstack.Authenticate.OpenId.Core.OpenIdState instance Data.Data.Data Happstack.Authenticate.OpenId.Core.OpenIdState instance GHC.Show.Show Happstack.Authenticate.OpenId.Core.OpenIdState instance GHC.Read.Read Happstack.Authenticate.OpenId.Core.OpenIdState instance GHC.Classes.Ord Happstack.Authenticate.OpenId.Core.OpenIdState instance GHC.Classes.Eq Happstack.Authenticate.OpenId.Core.OpenIdState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance GHC.Generics.Generic Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance Data.Data.Data Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance GHC.Show.Show Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance GHC.Read.Read Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance GHC.Classes.Ord Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance GHC.Classes.Eq Happstack.Authenticate.OpenId.Core.OpenIdState_1 instance Text.Shakespeare.I18N.RenderMessage Happstack.Authenticate.Core.HappstackAuthenticateI18N Happstack.Authenticate.OpenId.Core.OpenIdError instance GHC.Generics.Generic Happstack.Authenticate.OpenId.Core.OpenIdError instance Data.Data.Data Happstack.Authenticate.OpenId.Core.OpenIdError instance GHC.Show.Show Happstack.Authenticate.OpenId.Core.OpenIdError instance GHC.Read.Read Happstack.Authenticate.OpenId.Core.OpenIdError instance GHC.Classes.Ord Happstack.Authenticate.OpenId.Core.OpenIdError instance GHC.Classes.Eq Happstack.Authenticate.OpenId.Core.OpenIdError instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.OpenId.Core.OpenIdError instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.OpenId.Core.OpenIdError instance Language.Javascript.JMacro.Base.ToJExpr Happstack.Authenticate.OpenId.Core.OpenIdError instance Data.SafeCopy.SafeCopy.SafeCopy OpenId2.Types.Identifier module Happstack.Authenticate.OpenId.Partials type Partial' m = (RouteT AuthenticateURL (ReaderT [Lang] m)) type Partial m = XMLGenT (RouteT AuthenticateURL (ReaderT [Lang] m)) data PartialMsgs UsingYahooMsg :: PartialMsgs SetRealmMsg :: PartialMsgs OpenIdRealmMsg :: PartialMsgs routePartial :: (Functor m, Monad m, Happstack m) => AcidState AuthenticateState -> AcidState OpenIdState -> PartialURL -> Partial m XML usingYahoo :: (Functor m, Monad m) => Partial m XML realmForm :: (Functor m, MonadIO m) => AcidState OpenIdState -> Partial m XML instance Text.Shakespeare.I18N.RenderMessage Happstack.Authenticate.Core.HappstackAuthenticateI18N Happstack.Authenticate.OpenId.Partials.PartialMsgs instance (GHC.Base.Functor m, GHC.Base.Monad m) => HSP.XMLGenerator.EmbedAsChild (Happstack.Authenticate.OpenId.Partials.Partial' m) Happstack.Authenticate.OpenId.Partials.PartialMsgs instance (GHC.Base.Functor m, GHC.Base.Monad m) => HSP.XMLGenerator.EmbedAsAttr (Happstack.Authenticate.OpenId.Partials.Partial' m) (HSP.XMLGenerator.Attr Data.Text.Internal.Lazy.Text Happstack.Authenticate.OpenId.Partials.PartialMsgs) module Happstack.Authenticate.OpenId.Controllers openIdCtrl :: Happstack m => AcidState AuthenticateState -> AcidState OpenIdState -> RouteT AuthenticateURL m JStat openIdCtrlJs :: Maybe Text -> (OpenIdURL -> [(Text, Maybe Text)] -> Text) -> JStat module Happstack.Authenticate.OpenId.Route routeOpenId :: Happstack m => AcidState AuthenticateState -> AuthenticateConfig -> AcidState OpenIdState -> [Text] -> RouteT AuthenticateURL (ReaderT [Lang] m) Response initOpenId :: FilePath -> AcidState AuthenticateState -> AuthenticateConfig -> IO (Bool -> IO (), (AuthenticationMethod, AuthenticationHandler), RouteT AuthenticateURL (ServerPartT IO) JStat) module Happstack.Authenticate.Password.PartialsURL data PartialURL LoginInline :: PartialURL Login :: PartialURL Logout :: PartialURL SignupPassword :: PartialURL ChangePassword :: PartialURL RequestResetPasswordForm :: PartialURL ResetPasswordForm :: PartialURL rResetPasswordForm :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rRequestResetPasswordForm :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rChangePassword :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rSignupPassword :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rLogout :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rLogin :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) rLoginInline :: forall tok e r. Boomerang e tok r ((:-) PartialURL r) partialURL :: Router () (PartialURL :- ()) instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Password.PartialsURL.PartialURL instance GHC.Generics.Generic Happstack.Authenticate.Password.PartialsURL.PartialURL instance Data.Data.Data Happstack.Authenticate.Password.PartialsURL.PartialURL instance GHC.Classes.Ord Happstack.Authenticate.Password.PartialsURL.PartialURL instance GHC.Classes.Eq Happstack.Authenticate.Password.PartialsURL.PartialURL module Happstack.Authenticate.Password.URL passwordAuthenticationMethod :: AuthenticationMethod data AccountURL Password :: AccountURL rPassword :: forall tok e r. Boomerang e tok r ((:-) AccountURL r) accountURL :: Router () (AccountURL :- ()) data PasswordURL Token :: PasswordURL Account :: Maybe (UserId, AccountURL) -> PasswordURL Partial :: PartialURL -> PasswordURL PasswordRequestReset :: PasswordURL PasswordReset :: PasswordURL UsernamePasswordCtrl :: PasswordURL rUsernamePasswordCtrl :: forall tok e r. Boomerang e tok r ((:-) PasswordURL r) rPasswordReset :: forall tok e r. Boomerang e tok r ((:-) PasswordURL r) rPasswordRequestReset :: forall tok e r. Boomerang e tok r ((:-) PasswordURL r) rPartial :: forall tok e r. Boomerang e tok ((:-) PartialURL r) ((:-) PasswordURL r) rAccount :: forall tok e r. Boomerang e tok ((:-) (Maybe (UserId, AccountURL)) r) ((:-) PasswordURL r) rToken :: forall tok e r. Boomerang e tok r ((:-) PasswordURL r) passwordURL :: Router () (PasswordURL :- ()) nestPasswordURL :: RouteT PasswordURL m a -> RouteT AuthenticateURL m a instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Password.URL.PasswordURL instance GHC.Generics.Generic Happstack.Authenticate.Password.URL.PasswordURL instance Data.Data.Data Happstack.Authenticate.Password.URL.PasswordURL instance GHC.Classes.Ord Happstack.Authenticate.Password.URL.PasswordURL instance GHC.Classes.Eq Happstack.Authenticate.Password.URL.PasswordURL instance Web.Routes.PathInfo.PathInfo Happstack.Authenticate.Password.URL.AccountURL instance GHC.Generics.Generic Happstack.Authenticate.Password.URL.AccountURL instance Data.Data.Data Happstack.Authenticate.Password.URL.AccountURL instance GHC.Show.Show Happstack.Authenticate.Password.URL.AccountURL instance GHC.Read.Read Happstack.Authenticate.Password.URL.AccountURL instance GHC.Classes.Ord Happstack.Authenticate.Password.URL.AccountURL instance GHC.Classes.Eq Happstack.Authenticate.Password.URL.AccountURL module Happstack.Authenticate.Password.Core data PasswordConfig PasswordConfig :: Text -> Text -> (Text -> Maybe Text) -> PasswordConfig [_resetLink] :: PasswordConfig -> Text [_domain] :: PasswordConfig -> Text [_passwordAcceptable] :: PasswordConfig -> Text -> Maybe Text resetLink :: Lens' PasswordConfig Text passwordAcceptable :: Lens' PasswordConfig (Text -> Maybe Text) domain :: Lens' PasswordConfig Text data PasswordError NotAuthenticated :: PasswordError NotAuthorized :: PasswordError InvalidUsername :: PasswordError InvalidPassword :: PasswordError InvalidUsernamePassword :: PasswordError NoEmailAddress :: PasswordError MissingResetToken :: PasswordError InvalidResetToken :: PasswordError PasswordMismatch :: PasswordError UnacceptablePassword :: Text -> PasswordError [passwordErrorMessageMsg] :: PasswordError -> Text CoreError :: CoreError -> PasswordError [passwordErrorMessageE] :: PasswordError -> CoreError newtype HashedPass HashedPass :: ByteString -> HashedPass [_unHashedPass] :: HashedPass -> ByteString unHashedPass :: Iso' HashedPass ByteString -- | hash a password string mkHashedPass :: (Functor m, MonadIO m) => Text -> m HashedPass -- | verify a password verifyHashedPass :: Text -> HashedPass -> Bool data PasswordState PasswordState :: Map UserId HashedPass -> PasswordState [_passwords] :: PasswordState -> Map UserId HashedPass passwords :: Iso' PasswordState (Map UserId HashedPass) initialPasswordState :: PasswordState -- | set the password for UserId setPassword :: UserId -> HashedPass -> Update PasswordState () -- | delete the password for UserId deletePassword :: UserId -> Update PasswordState () -- | verify that the supplied password matches the stored hashed password -- for UserId verifyPasswordForUserId :: UserId -> Text -> Query PasswordState Bool data SetPassword SetPassword :: UserId -> HashedPass -> SetPassword newtype DeletePassword DeletePassword :: UserId -> DeletePassword data VerifyPasswordForUserId VerifyPasswordForUserId :: UserId -> Text -> VerifyPasswordForUserId -- | verify that the supplied username/password is valid verifyPassword :: MonadIO m => AcidState AuthenticateState -> AcidState PasswordState -> Username -> Text -> m Bool data UserPass UserPass :: Username -> Text -> UserPass [_user] :: UserPass -> Username [_password] :: UserPass -> Text user :: Lens' UserPass Username password :: Lens' UserPass Text token :: Happstack m => AcidState AuthenticateState -> AuthenticateConfig -> AcidState PasswordState -> m Response -- | JSON record for new account data data NewAccountData NewAccountData :: User -> Text -> Text -> NewAccountData [_naUser] :: NewAccountData -> User [_naPassword] :: NewAccountData -> Text [_naPasswordConfirm] :: NewAccountData -> Text naUser :: Lens' NewAccountData User naPasswordConfirm :: Lens' NewAccountData Text naPassword :: Lens' NewAccountData Text -- | JSON record for change password data data ChangePasswordData ChangePasswordData :: Text -> Text -> Text -> ChangePasswordData [_cpOldPassword] :: ChangePasswordData -> Text [_cpNewPassword] :: ChangePasswordData -> Text [_cpNewPasswordConfirm] :: ChangePasswordData -> Text cpOldPassword :: Lens' ChangePasswordData Text cpNewPasswordConfirm :: Lens' ChangePasswordData Text cpNewPassword :: Lens' ChangePasswordData Text -- | account handler account :: Happstack m => AcidState AuthenticateState -> AcidState PasswordState -> AuthenticateConfig -> PasswordConfig -> Maybe (UserId, AccountURL) -> m (Either PasswordError UserId) -- | JSON record for new account data data RequestResetPasswordData RequestResetPasswordData :: Username -> RequestResetPasswordData [_rrpUsername] :: RequestResetPasswordData -> Username rrpUsername :: Iso' RequestResetPasswordData Username -- | request reset password passwordRequestReset :: Happstack m => AuthenticateConfig -> PasswordConfig -> AcidState AuthenticateState -> AcidState PasswordState -> m (Either PasswordError Text) -- | issueResetToken issueResetToken :: MonadIO m => AcidState AuthenticateState -> User -> m (Either PasswordError Text) sendResetEmail :: MonadIO m => Maybe FilePath -> Email -> SimpleAddress -> Maybe SimpleAddress -> Text -> m () -- | JSON record for new account data data ResetPasswordData ResetPasswordData :: Text -> Text -> Text -> ResetPasswordData [_rpPassword] :: ResetPasswordData -> Text [_rpPasswordConfirm] :: ResetPasswordData -> Text [_rpResetToken] :: ResetPasswordData -> Text rpResetToken :: Lens' ResetPasswordData Text rpPasswordConfirm :: Lens' ResetPasswordData Text rpPassword :: Lens' ResetPasswordData Text passwordReset :: Happstack m => AcidState AuthenticateState -> AcidState PasswordState -> PasswordConfig -> m (Either PasswordError Text) decodeAndVerifyResetToken :: MonadIO m => AcidState AuthenticateState -> Text -> m (Maybe (User, JWT VerifiedJWT)) instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.ResetPasswordData instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.ResetPasswordData instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.ResetPasswordData instance Data.Data.Data Happstack.Authenticate.Password.Core.ResetPasswordData instance GHC.Show.Show Happstack.Authenticate.Password.Core.ResetPasswordData instance GHC.Read.Read Happstack.Authenticate.Password.Core.ResetPasswordData instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.ResetPasswordData instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.ResetPasswordData instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.RequestResetPasswordData instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.RequestResetPasswordData instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.RequestResetPasswordData instance Data.Data.Data Happstack.Authenticate.Password.Core.RequestResetPasswordData instance GHC.Show.Show Happstack.Authenticate.Password.Core.RequestResetPasswordData instance GHC.Read.Read Happstack.Authenticate.Password.Core.RequestResetPasswordData instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.RequestResetPasswordData instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.RequestResetPasswordData instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.ChangePasswordData instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.ChangePasswordData instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.ChangePasswordData instance Data.Data.Data Happstack.Authenticate.Password.Core.ChangePasswordData instance GHC.Show.Show Happstack.Authenticate.Password.Core.ChangePasswordData instance GHC.Read.Read Happstack.Authenticate.Password.Core.ChangePasswordData instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.ChangePasswordData instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.ChangePasswordData instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.NewAccountData instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.NewAccountData instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.NewAccountData instance Data.Data.Data Happstack.Authenticate.Password.Core.NewAccountData instance GHC.Show.Show Happstack.Authenticate.Password.Core.NewAccountData instance GHC.Read.Read Happstack.Authenticate.Password.Core.NewAccountData instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.NewAccountData instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.NewAccountData instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.UserPass instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.UserPass instance Language.Javascript.JMacro.Base.ToJExpr Happstack.Authenticate.Password.Core.UserPass instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.UserPass instance Data.Data.Data Happstack.Authenticate.Password.Core.UserPass instance GHC.Show.Show Happstack.Authenticate.Password.Core.UserPass instance GHC.Read.Read Happstack.Authenticate.Password.Core.UserPass instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.UserPass instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.UserPass instance Data.Acid.Common.IsAcidic Happstack.Authenticate.Password.Core.PasswordState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Password.Core.VerifyPasswordForUserId instance Data.Acid.Core.Method Happstack.Authenticate.Password.Core.VerifyPasswordForUserId instance Data.Acid.Common.QueryEvent Happstack.Authenticate.Password.Core.VerifyPasswordForUserId instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Password.Core.DeletePassword instance Data.Acid.Core.Method Happstack.Authenticate.Password.Core.DeletePassword instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Password.Core.DeletePassword instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Password.Core.SetPassword instance Data.Acid.Core.Method Happstack.Authenticate.Password.Core.SetPassword instance Data.Acid.Common.UpdateEvent Happstack.Authenticate.Password.Core.SetPassword instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Password.Core.PasswordState instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.PasswordState instance Data.Data.Data Happstack.Authenticate.Password.Core.PasswordState instance GHC.Show.Show Happstack.Authenticate.Password.Core.PasswordState instance GHC.Read.Read Happstack.Authenticate.Password.Core.PasswordState instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.PasswordState instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.PasswordState instance Data.SafeCopy.SafeCopy.SafeCopy Happstack.Authenticate.Password.Core.HashedPass instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.HashedPass instance Data.Data.Data Happstack.Authenticate.Password.Core.HashedPass instance GHC.Show.Show Happstack.Authenticate.Password.Core.HashedPass instance GHC.Read.Read Happstack.Authenticate.Password.Core.HashedPass instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.HashedPass instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.HashedPass instance Text.Shakespeare.I18N.RenderMessage Happstack.Authenticate.Core.HappstackAuthenticateI18N Happstack.Authenticate.Password.Core.PasswordError instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.PasswordError instance Data.Data.Data Happstack.Authenticate.Password.Core.PasswordError instance GHC.Show.Show Happstack.Authenticate.Password.Core.PasswordError instance GHC.Read.Read Happstack.Authenticate.Password.Core.PasswordError instance GHC.Classes.Ord Happstack.Authenticate.Password.Core.PasswordError instance GHC.Classes.Eq Happstack.Authenticate.Password.Core.PasswordError instance Data.Aeson.Types.ToJSON.ToJSON Happstack.Authenticate.Password.Core.PasswordError instance Data.Aeson.Types.FromJSON.FromJSON Happstack.Authenticate.Password.Core.PasswordError instance Language.Javascript.JMacro.Base.ToJExpr Happstack.Authenticate.Password.Core.PasswordError instance GHC.Generics.Generic Happstack.Authenticate.Password.Core.PasswordConfig module Happstack.Authenticate.Password.Partials type Partial' m = (RouteT AuthenticateURL (ReaderT [Lang] m)) type Partial m = XMLGenT (RouteT AuthenticateURL (ReaderT [Lang] m)) data PartialMsgs UsernameMsg :: PartialMsgs EmailMsg :: PartialMsgs PasswordMsg :: PartialMsgs PasswordConfirmationMsg :: PartialMsgs SignUpMsg :: PartialMsgs SignInMsg :: PartialMsgs LogoutMsg :: PartialMsgs OldPasswordMsg :: PartialMsgs NewPasswordMsg :: PartialMsgs NewPasswordConfirmationMsg :: PartialMsgs ChangePasswordMsg :: PartialMsgs RequestPasswordResetMsg :: PartialMsgs routePartial :: (Functor m, Monad m, Happstack m) => AcidState AuthenticateState -> PartialURL -> Partial m XML signupPasswordForm :: (Functor m, Monad m) => Partial m XML usernamePasswordForm :: (Functor m, Monad m) => Bool -> Partial m XML logoutForm :: (Functor m, MonadIO m) => Partial m XML changePasswordForm :: (Functor m, MonadIO m) => UserId -> Partial m XML requestResetPasswordForm :: (Functor m, MonadIO m) => Partial m XML resetPasswordForm :: (Functor m, MonadIO m) => Partial m XML instance Text.Shakespeare.I18N.RenderMessage Happstack.Authenticate.Core.HappstackAuthenticateI18N Happstack.Authenticate.Password.Partials.PartialMsgs instance (GHC.Base.Functor m, GHC.Base.Monad m) => HSP.XMLGenerator.EmbedAsChild (Happstack.Authenticate.Password.Partials.Partial' m) Happstack.Authenticate.Password.Partials.PartialMsgs instance (GHC.Base.Functor m, GHC.Base.Monad m) => HSP.XMLGenerator.EmbedAsAttr (Happstack.Authenticate.Password.Partials.Partial' m) (HSP.XMLGenerator.Attr Data.Text.Internal.Lazy.Text Happstack.Authenticate.Password.Partials.PartialMsgs) module Happstack.Authenticate.Password.Controllers usernamePasswordCtrl :: Monad m => RouteT AuthenticateURL m JStat usernamePasswordCtrlJs :: (PasswordURL -> [(Text, Maybe Text)] -> Text) -> JStat module Happstack.Authenticate.Password.Route routePassword :: Happstack m => PasswordConfig -> AcidState AuthenticateState -> AuthenticateConfig -> AcidState PasswordState -> [Text] -> RouteT AuthenticateURL (ReaderT [Lang] m) Response initPassword :: PasswordConfig -> FilePath -> AcidState AuthenticateState -> AuthenticateConfig -> IO (Bool -> IO (), (AuthenticationMethod, AuthenticationHandler), RouteT AuthenticateURL (ServerPartT IO) JStat) module Happstack.Authenticate.Route route :: [RouteT AuthenticateURL (ServerPartT IO) JStat] -> AuthenticationHandlers -> AuthenticateURL -> RouteT AuthenticateURL (ServerPartT IO) Response initAuthentication :: Maybe FilePath -> AuthenticateConfig -> [FilePath -> AcidState AuthenticateState -> AuthenticateConfig -> IO (Bool -> IO (), (AuthenticationMethod, AuthenticationHandler), RouteT AuthenticateURL (ServerPartT IO) JStat)] -> IO (IO (), AuthenticateURL -> RouteT AuthenticateURL (ServerPartT IO) Response, AcidState AuthenticateState) instance (GHC.Base.Functor m, Control.Monad.IO.Class.MonadIO m) => HSP.JMacro.IntegerSupply (Web.Routes.RouteT.RouteT Happstack.Authenticate.Core.AuthenticateURL m)