w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                   None+0JK  None+0JK      None(*+02346=BJKM4a  uniquely identifies a user.}when creating JSON field names, drop the first character. Since we are using lens, the leading character should always be _."convert a value to a JSON encoded "convert a value to a JSON encoded  #convert an error to a JSON encoded #Ian arbitrary, but unique string that the user uses to identify themselves' get the next -an -% address. No validation in performed.5 A unique 5?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.Kthe K type is used to represent errors in a language agnostic manner. The errors are translated into human readable form via the I18N translations.SA map which stores the ? for each U Generate a Salt from 128 bits of data from  /dev/urandomV, with the system RNG as a fallback. This is the function used to generate salts by  makePassword.V Generate a ? from  /dev/urandom.see: UW Generate a ? from .see: UX An empty S]^This value is used to configure the type of new user registrations permitted for this system.^'only the admin can create a new account_jnew users can apply to create their own accounts, but a moderator must approve them before they are active`'new users can create their own accountsbNthis acid-state value contains the state common to all authentication methodsg#default session time out in secondspa reasonable initial bqset the ? for ! overwritten any previous secret.rget the ? for s3set the default inactivity timeout for new sessionst3set the default inactivity timeout for new sessionsuset the ]vget the ]w Create a new 5. This will allocate a new . The returned 5 value will have the updated .x Create a new 5. This will allocate a new . The returned 5 value will have the updated .yUpdate an existing 5. Must already have a valid .zDelete 5 with the specified { look up a 5 by their #| look up a 5 by their } look up a 5 by their -~&get the entire AuthenticateState valueThe = type represents the encrypted data used to identify a user.get the ? for *. Generate one if they don't have one yet.b is used by the routing system to select which authentication backend should handle this request. is the encrypted form of the 4 which is passed between the server and the client. create a  for 5The  isAuthAdmin? paramater is a function which will be called to determine if o 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.decode and verify the . If successful, return the  otherwise . name of the  used to hold the  create a  for 5 and add a  to the  see also:  delete the  get, decode, and verify the  from the .get, decode, and verify the  from the  Authorization HTTP headerget, decode, and verify the  looking first in the  Authorization header and then in . see also: , get the calls  but returns only the a  for AuthenicateURLLhelper function which converts a URL for an authentication backend into an . !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs,default timout in seconds (should be >= 180)tuvwxyz{|}~isAuthAdmin functionthe user "#$%&',-./056789:?@ABCDEFKLMNOPQRSTUVWX]^_`bcdefghklmnopqrstuvwxyz{|}~ !"&*)('#$%+,0321-./4:=<;56789>FEDIHCBG?@AJTUVWSXKRQPONML[ZY\a]`_^ibcdefghjonmlkpqrstuvwxyz{|}~x !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKRQPONMLSTUVWXYZ[\]`_^abcdefghijklmnopqrstuvwxyz{|}~NoneNone24None(+0246=JKNoneNone(+0246=K hash a password stringverify a passwordset the password for delete the password for Iverify that the supplied password matches the stored hashed password for  3verify that the supplied username/password is valid  JSON record for new account data$JSON record for change password data  JSON record for new account data&account handler) JSON record for new account data/request reset password0issueResetToken\password in plain textsalted and hashedpassword in plain texthashed version of passwordUserIdthe hashed passwordUserIdUserIdplain-text password      !"#$%&'()*+,-./0123456789:J     !"#$%&)*+,-./0145678e              %$#('& !".32/01)*+,-654:9789       !"#$%&'()*+,-./0123456789: None;;;; None +0246JK<=>?@ABCDEFGHIJKLMNOPQRST<=>?@ABCDEFGHIJKLMNOPQJI<HGFEDCBA@?>=TSRKLMNOPQ < HGFEDCBA@?>=IJKLMNOPQRST NoneUVUVUVUV None(+0246=JK WXYZ[\]^_`abc WXYZ[\]^_`ab \W[ZYX`_^]acb W[ZYX\]^_`abc None +06=K|.Get the OpenId realm to use for authentication},set the realm used for OpenId AuthenticationIMPORTANT: 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.-defghijklmnopqrstuvwxyz{|}~"defglmnqrstuwxyz{|}9kdgefjiholmnpuqrstvxw~yz{|}dgefhijklmnopqrstuvwxyz{|}~NoneNone +0246JK  None !"#$%&'(()**+,-./01123456789::;<=>?@AABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~U      !"#$%&' ( ) * + , - . / 0 1 2 3 4 5  6 7 8 ( 9 : ; < = > ? @ A B C D E  F G H I J K L M U N O P Q R S T T U V W X X Y Z [ \ ] ^ _ ` a b c d e e f g g h h i i j j k l m n  o pqr)stuv67wxy=>?z{|}~|happstack-authenticate-2.1.4)Happstack.Authenticate.OpenId.PartialsURL+Happstack.Authenticate.Password.PartialsURLHappstack.Authenticate.Core!Happstack.Authenticate.ControllerHappstack.Authenticate.Route#Happstack.Authenticate.Password.URL+Happstack.Authenticate.Password.Controllers$Happstack.Authenticate.Password.Core%Happstack.Authenticate.Password.Forms(Happstack.Authenticate.Password.Partials%Happstack.Authenticate.Password.Route!Happstack.Authenticate.OpenId.URL"Happstack.Authenticate.OpenId.Core)Happstack.Authenticate.OpenId.Controllers&Happstack.Authenticate.OpenId.Partials#Happstack.Authenticate.OpenId.RouteSystemRandom PartialURL RealmForm UsingYahoo UsingGoogle rUsingGoogle rUsingYahoo rRealmForm partialURL$fPathInfoPartialURLResetPasswordFormRequestResetPasswordFormChangePasswordSignupPasswordLogout LoginInline rLoginInlinerLogoutrSignupPasswordrChangePasswordrRequestResetPasswordFormrResetPasswordFormUserId _unUserIdHappstackAuthenticateI18N jsonOptionstoJSONResponse toJSONSuccess toJSONError$fSafeCopyUserIdunUserIdUsername _unUsernamerUserId succUserId$fPathInfoUserId$fFromJSONUserId$fToJSONUserId$fSafeCopyUsername unUsernameEmail_unEmail rUsername$fPathInfoUsername$fFromJSONUsername$fToJSONUsername$fSafeCopyEmailUser_userId _username_emailunEmail$fPathInfoEmail$fFromJSONEmail $fToJSONEmail$fSafeCopyUser SharedSecret_unSharedSecretIxUserUserIxsemailuserIdusername$fIndexable:User$fFromJSONUser $fToJSONUser$fSafeCopySharedSecret CoreError InvalidUserIdJSONDecodeFailed ForbiddenAuthorizationRequiredUsernameAlreadyExistsURLDecodeFailedHandlerNotFound SharedSecretsunSharedSecretgenSharedSecretgenSharedSecretDevURandomgenSharedSecretSysRandominitialSharedSecrets$fToJExprCoreError$fFromJSONCoreError$fToJSONCoreError$fSafeCopyCoreErrorNewAccountModeClosedRegistrationModeratedRegistrationOpenRegistration1$fRenderMessageHappstackAuthenticateI18NCoreErrorAuthenticateState_sharedSecrets_users _nextUserId_defaultSessionTimeout_newAccountMode$fSafeCopyNewAccountMode$fSafeCopyAuthenticateStatedefaultSessionTimeoutnewAccountMode nextUserId sharedSecretsusersinitialAuthenticateStatesetSharedSecretgetSharedSecretsetDefaultSessionTimeoutgetDefaultSessionTimeoutsetNewAccountModegetNewAccountMode createUsercreateAnonymousUser updateUser deleteUsergetUserByUsernamegetUserByUserIdgetUserByEmailgetAuthenticateStateToken _tokenUser_tokenIsAuthAdminGetAuthenticateStateGetUserByEmailGetUserByUserIdGetUserByUsername DeleteUser UpdateUserCreateAnonymousUser CreateUserGetNewAccountModeSetNewAccountModeGetSharedSecretSetSharedSecretGetDefaultSessionTimeoutSetDefaultSessionTimeoutgetOrGenSharedSecret'TFCo:R:MethodResultGetAuthenticateStateAuthenticationMethod_unAuthenticationMethod TokenTexttokenIsAuthAdmin tokenUser issueTokendecodeAndVerifyTokenauthCookieNameaddTokenCookiedeleteTokenCookiegetTokenCookiegetTokenHeadergetToken getUserId$fFromJSONToken $fToJSONToken$fPathInfoAuthenticationMethod$fSafeCopyAuthenticationMethodunAuthenticationMethodAuthenticateURL ControllersAuthenticationMethodsAuthenticationHandlersAuthenticationHandlerrAuthenticationMethod$fFromJSONAuthenticationMethod$fToJSONAuthenticationMethodrAuthenticationMethods rControllersauthenticateURLnestAuthenticationMethod$fPathInfoAuthenticateURLauthenticateCtrlauthenticateCtrlJsrouteinitAuthentication$fIntegerSupplyRouteT AccountURLPasswordpasswordAuthenticationMethod PasswordURLUsernamePasswordCtrl PasswordResetPasswordRequestResetPartialAccount rPassword accountURL$fPathInfoAccountURLrTokenrAccountrPartialrPasswordRequestResetrPasswordResetrUsernamePasswordCtrl passwordURLnestPasswordURL$fPathInfoPasswordURLusernamePasswordCtrlusernamePasswordCtrlJs PasswordErrorpasswordErrorMessageEPasswordMismatchInvalidResetTokenMissingResetTokenNoEmailAddressInvalidUsernamePasswordInvalidPasswordInvalidUsername NotAuthorizedNotAuthenticated$fToJExprPasswordError$fFromJSONPasswordError$fToJSONPasswordError HashedPass _unHashedPass5$fRenderMessageHappstackAuthenticateI18NPasswordError$fSafeCopyHashedPass PasswordState _passwords unHashedPass mkHashedPassverifyHashedPass$fSafeCopyPasswordState passwordsinitialPasswordState setPassworddeletePasswordverifyPasswordForUserIdUserPass_user _passwordVerifyPasswordForUserIdDeletePassword SetPasswordverifyPassword*TFCo:R:MethodResultVerifyPasswordForUserIdNewAccountData_naUser _naPassword_naPasswordConfirmpasswordusertoken$fToJExprUserPass$fFromJSONUserPass$fToJSONUserPassChangePasswordData_cpOldPassword_cpNewPassword_cpNewPasswordConfirm naPasswordnaPasswordConfirmnaUser$fFromJSONNewAccountData$fToJSONNewAccountDataRequestResetPasswordData _rrpUsername cpNewPasswordcpNewPasswordConfirm cpOldPasswordaccount$fFromJSONChangePasswordData$fToJSONChangePasswordDataResetPasswordData _rpPassword_rpPasswordConfirm _rpResetToken rrpUsernamepasswordRequestResetissueResetTokensendResetEmail"$fFromJSONRequestResetPasswordData $fToJSONRequestResetPasswordData rpPasswordrpPasswordConfirm rpResetToken passwordResetdecodeAndVerifyResetToken$fFromJSONResetPasswordData$fToJSONResetPasswordDatausernamePasswordForm PartialMsgsRequestPasswordResetMsgChangePasswordMsgNewPasswordConfirmationMsgNewPasswordMsgOldPasswordMsg LogoutMsg SignInMsg SignUpMsgPasswordConfirmationMsg PasswordMsgEmailMsg UsernameMsgPartial' routePartialsignupPasswordForm logoutFormchangePasswordFormrequestResetPasswordFormresetPasswordForm$fEmbedAsAttrRouteTAttr$fEmbedAsChildRouteTPartialMsgs3$fRenderMessageHappstackAuthenticateI18NPartialMsgs routePassword initPassword OpenIdURLRealmReturnTo BeginDanceopenIdAuthenticationMethod rBeginDance rReturnTorRealm openIdURL nestOpenIdURL$fPathInfoOpenIdURL OpenIdErroropenIdErrorMessageEUnknownIdentifier$fToJExprOpenIdError$fFromJSONOpenIdError$fToJSONOpenIdError$fSafeCopyIdentifier OpenIdState_1_identifiers_13$fRenderMessageHappstackAuthenticateI18NOpenIdError$fSafeCopyOpenIdState_1 OpenIdState _identifiers _openIdRealm identifiers_1$fSafeCopyOpenIdState identifiers openIdRealminitialOpenIdStateidentifierToUserIdassociateIdentifierWithUserIdgetOpenIdRealmsetOpenIdRealm$fMigrateOpenIdState SetRealmData_srOpenIdRealmSetOpenIdRealmGetOpenIdRealmAssociateIdentifierWithUserIdIdentifierToUserId!TFCo:R:MethodResultSetOpenIdRealm srOpenIdRealmrealm getIdentifier$fFromJSONSetRealmData$fToJSONSetRealmData openIdCtrl openIdCtrlJsOpenIdRealmMsg SetRealmMsg UsingYahooMsgUsingGoogleMsg usingGoogle usingYahoo realmForm routeOpenId initOpenIdhappstack-server-7.4.4Happstack.Server.Internal.TypesResponsebase Data.MaybeNothing Happstack.Server.Internal.CookieCookieweb-routes-boomerang-0.28.4Web.Routes.BoomerangRouter