Documentation ¶
Overview ¶
Package login is a middleware for Martini that provides a simple way to track account sessions in on a website. Please see https://github.com/martini-contrib/sessionauth/blob/master/README.md for a more detailed description of the package.
Index ¶
- Constants
- Variables
- func AdminRequired(r render.Render, account Account, req *http.Request)
- func AuthenticateSession(s session.Store, account Account) error
- func LoginRequired(r render.Render, account Account, req *http.Request)
- func Logout(s session.Store, account Account)
- func SessionAccount(newAccount func() Account) martini.Handler
- func Update(s session.Store, account Account) error
- type Account
Constants ¶
const AUTH_UNIQUE_ID string = "AUTH_UNIQUE_ID"
Variables ¶
var ( // RedirectUrl should be the relative URL for your login route RedirectUrl string = "/account/login" AdminRedirectUrl string = "/admin/account/login" // RedirectParam is the query string parameter that will be set // with the page the account was trying to visit before they were // intercepted. RedirectParam string = "next" )
These are the default configuration values for this package. They can be set at anytime, probably during the initial setup of Martini.
Functions ¶
func AuthenticateSession ¶
AuthenticateSession will mark the session and account object as authenticated. Then the Login() account function will be called. This function should be called after you have validated a account.
func LoginRequired ¶
LoginRequired verifies that the current account is authenticated. Any routes that require a login should have this handler placed in the flow. If the account is not authenticated, they will be redirected to /login with the "next" get parameter set to the attempted URL.
func SessionAccount ¶
SessionAccount will try to read a unique account ID out of the session. Then it tries to populate an anonymous account object from the database based on that ID. If this is successful, the valid account is mapped into the context. Otherwise the anonymous account is mapped into the contact. The newUser() function should provide a valid 0value structure for the caller's account type.
Types ¶
type Account ¶
type Account interface { // Return whether this account is logged in or not IsAuthenticated() bool IsAdmin() bool // Set any flags or extra data that should be available Login() // Clear any sensitive data out of the account Logout() // Return the unique identifier of this account object UniqueId() interface{} // Populate this account object with values GetById(id interface{}) (Account, error) }
Account defines all the functions necessary to work with the account's authentication. The caller should implement these functions for whatever system of authentication they choose to use