# rivet_ident v4.0.0 - Table of Contents

> Authentication and Authorization add-on for Rivets Framework

## Modules

- [Rivet.Auth](Rivet.Auth.md): Public interface to authentication and authorization functions.

- [Rivet.Auth.Access](Rivet.Auth.Access.md): Validation of tokens for accessing site (after refresh)
- [Rivet.Auth.Assertion](Rivet.Auth.Assertion.md): Used for standardizing auth assertion checks.
- [Rivet.Auth.Domain](Rivet.Auth.Domain.md): Structure for in-process authentication result contexts, not directly to one user

- [Rivet.Auth.Graphql](Rivet.Auth.Graphql.md): Helpers for Graphql resolvers.

- [Rivet.Auth.Identify](Rivet.Auth.Identify.md): 
- [Rivet.Auth.Refresh](Rivet.Auth.Refresh.md): Tooling for the second phase of auth: Refresh
- [Rivet.Auth.Settings](Rivet.Auth.Settings.md): How we are configured globally

- [Rivet.Auth.Signin](Rivet.Auth.Signin.md)
- [Rivet.Auth.Signin.Google](Rivet.Auth.Signin.Google.md): Google login scheme

- [Rivet.Auth.Signin.Google.KeyManager](Rivet.Auth.Signin.Google.KeyManager.md): This module runs as a separate process which keeps google's oauth public certs
current, as they change weekly.  This process inspects the expiration date
(which google says should be correct) and updates at least by then, but does
not wait longer than 1 day.

- [Rivet.Auth.Signin.Local](Rivet.Auth.Signin.Local.md): Local login scheme

- [Rivet.Auth.Token](Rivet.Auth.Token.md)
- [Rivet.Auth.Token.Access](Rivet.Auth.Token.Access.md)
- [Rivet.Auth.Token.Check](Rivet.Auth.Token.Check.md): Validate tokens are meeting our requirements

- [Rivet.Auth.Token.Create](Rivet.Auth.Token.Create.md)
- [Rivet.Auth.Token.Validation](Rivet.Auth.Token.Validation.md)
- [Rivet.Auth.Token.Verify](Rivet.Auth.Token.Verify.md): Verify tokens meet our requirements

- [Rivet.Ident](Rivet.Ident.md)
- [Rivet.Ident.Access](Rivet.Ident.Access.md): Schema for representing and working with a Ident.Access.

- [Rivet.Ident.Access.Lib](Rivet.Ident.Access.Lib.md)
- [Rivet.Ident.Action](Rivet.Ident.Action.md): Schema for representing and working with a Ident.Action.

- [Rivet.Ident.Application](Rivet.Ident.Application.md)
- [Rivet.Ident.Email](Rivet.Ident.Email.md): Schema for representing and working with a Ident.Email.

- [Rivet.Ident.Email.Lib](Rivet.Ident.Email.Lib.md)
- [Rivet.Ident.Example.Mailer](Rivet.Ident.Example.Mailer.md): This is an example of how to deploy Rivet Email, and is included so other
projects may include it in their tests.

- [Rivet.Ident.Example.Mailer.Backend](Rivet.Ident.Example.Mailer.Backend.md)
- [Rivet.Ident.Example.Mailer.Configurator](Rivet.Ident.Example.Mailer.Configurator.md)
- [Rivet.Ident.Example.Mailer.Template](Rivet.Ident.Example.Mailer.Template.md)
- [Rivet.Ident.Factor](Rivet.Ident.Factor.md): Schema for representing and working with an AuthFactor.

- [Rivet.Ident.Factor.Cache](Rivet.Ident.Factor.Cache.md)
- [Rivet.Ident.Factor.FedId](Rivet.Ident.Factor.FedId.md): Structure for in-process authentication result contexts, not directly to one user

- [Rivet.Ident.Factor.FedId.Email](Rivet.Ident.Factor.FedId.Email.md)
- [Rivet.Ident.Factor.FedId.Provider](Rivet.Ident.Factor.FedId.Provider.md)
- [Rivet.Ident.Factor.FederatedTypes](Rivet.Ident.Factor.FederatedTypes.md)
- [Rivet.Ident.Factor.Lib](Rivet.Ident.Factor.Lib.md)
- [Rivet.Ident.Factor.Password.Puid](Rivet.Ident.Factor.Password.Puid.md): Puid.generate/0 is included with the `use` statement below.  It generates 18 random characters.

- [Rivet.Ident.Factor.Password.Puid.Bits](Rivet.Ident.Factor.Password.Puid.Bits.md)
- [Rivet.Ident.Factor.Password.Puid.Decoder](Rivet.Ident.Factor.Password.Puid.Decoder.md)
- [Rivet.Ident.Factor.Password.Puid.Encoder](Rivet.Ident.Factor.Password.Puid.Encoder.md)
- [Rivet.Ident.Factor.Password.RandChars](Rivet.Ident.Factor.Password.RandChars.md)
- [Rivet.Ident.Factor.Types](Rivet.Ident.Factor.Types.md)
- [Rivet.Ident.Handle](Rivet.Ident.Handle.md): Schema for representing and working with a Handle.

- [Rivet.Ident.Handle.Lib](Rivet.Ident.Handle.Lib.md)
- [Rivet.Ident.Phone](Rivet.Ident.Phone.md)
- [Rivet.Ident.Role](Rivet.Ident.Role.md)
- [Rivet.Ident.Role.Cache](Rivet.Ident.Role.Cache.md)
- [Rivet.Ident.Role.Type](Rivet.Ident.Role.Type.md)
- [Rivet.Ident.RoleMap](Rivet.Ident.RoleMap.md): Schema for representing and working with a Ident.RoleMap.

- [Rivet.Ident.RoleMap.Lib](Rivet.Ident.RoleMap.Lib.md)
- [Rivet.Ident.User](Rivet.Ident.User.md): Schema for representing and working with a Ident.User.

- [Rivet.Ident.User.Cache](Rivet.Ident.User.Cache.md): Used by websockets token authentication.  Very short term cache to efficiently
load ~30 websockets all at once for a single dashboard.

- [Rivet.Ident.User.Lib](Rivet.Ident.User.Lib.md)
- [Rivet.Ident.User.Lib.Signup](Rivet.Ident.User.Lib.Signup.md)
- [Rivet.Ident.User.Lib.Update](Rivet.Ident.User.Lib.Update.md): Making changes to a user (administratively or as the user).
- [Rivet.Ident.User.PasswordGenerator](Rivet.Ident.User.PasswordGenerator.md)
- [Rivet.Ident.User.PasswordGenerator.Alpha](Rivet.Ident.User.PasswordGenerator.Alpha.md)
- [Rivet.Ident.User.PasswordGenerator.Alpha.Bits](Rivet.Ident.User.PasswordGenerator.Alpha.Bits.md)
- [Rivet.Ident.User.PasswordGenerator.Alpha.Decoder](Rivet.Ident.User.PasswordGenerator.Alpha.Decoder.md)
- [Rivet.Ident.User.PasswordGenerator.Alpha.Encoder](Rivet.Ident.User.PasswordGenerator.Alpha.Encoder.md)
- [Rivet.Ident.User.PasswordGenerator.Decimal](Rivet.Ident.User.PasswordGenerator.Decimal.md)
- [Rivet.Ident.User.PasswordGenerator.Decimal.Bits](Rivet.Ident.User.PasswordGenerator.Decimal.Bits.md)
- [Rivet.Ident.User.PasswordGenerator.Decimal.Decoder](Rivet.Ident.User.PasswordGenerator.Decimal.Decoder.md)
- [Rivet.Ident.User.PasswordGenerator.Decimal.Encoder](Rivet.Ident.User.PasswordGenerator.Decimal.Encoder.md)
- [Rivet.Ident.User.PasswordGenerator.Empty](Rivet.Ident.User.PasswordGenerator.Empty.md)
- [Rivet.Ident.User.PasswordGenerator.Symbol](Rivet.Ident.User.PasswordGenerator.Symbol.md)
- [Rivet.Ident.User.PasswordGenerator.Symbol.Bits](Rivet.Ident.User.PasswordGenerator.Symbol.Bits.md)
- [Rivet.Ident.User.PasswordGenerator.Symbol.Decoder](Rivet.Ident.User.PasswordGenerator.Symbol.Decoder.md)
- [Rivet.Ident.User.PasswordGenerator.Symbol.Encoder](Rivet.Ident.User.PasswordGenerator.Symbol.Encoder.md)
- [Rivet.Ident.User.Types](Rivet.Ident.User.Types.md)
- [Rivet.Ident.UserCode](Rivet.Ident.UserCode.md): Schema for representing and working with a Ident.UserCode.

- [Rivet.Ident.UserCode.Lib](Rivet.Ident.UserCode.Lib.md)
- [Rivet.Ident.UserData](Rivet.Ident.UserData.md): Schema for representing and working with a Ident.UserData.

- [Rivet.Ident.UserData.Lib](Rivet.Ident.UserData.Lib.md)
- [Rivet.Ident.UserData.Types](Rivet.Ident.UserData.Types.md)
- [Rivet.Ident.UserIdent](Rivet.Ident.UserIdent.md)
- [Rivet.Ident.UserIdent.Lib](Rivet.Ident.UserIdent.Lib.md)

