Documentation
¶
Index ¶
- type Config
- type Provider
- type ProviderGroup
- func (g *ProviderGroup) Handler(provider_name string) (rv *ProviderHandler, exists bool)
- func (g *ProviderGroup) LoggedIn(ctx context.Context) (bool, error)
- func (g *ProviderGroup) LoginRequired(h http.Handler, login_redirect func(redirect_to string) (url string)) http.Handler
- func (g *ProviderGroup) LoginURL(provider_name, redirect_to string, force_prompt bool) string
- func (g *ProviderGroup) LogoutAll(ctx context.Context, w http.ResponseWriter) error
- func (g *ProviderGroup) LogoutAllURL(redirect_to string) string
- func (g *ProviderGroup) LogoutURL(provider_name, redirect_to string) string
- func (g *ProviderGroup) Providers() map[string]*ProviderHandler
- func (g *ProviderGroup) Routes(cb func(method, path string, annotations map[string]string))
- func (g *ProviderGroup) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (g *ProviderGroup) Tokens(ctx context.Context) (map[string]*oauth2.Token, error)
- type ProviderHandler
- func (o *ProviderHandler) LoggedIn(ctx context.Context) (bool, error)
- func (o *ProviderHandler) LoginRequired(h http.Handler) http.Handler
- func (o *ProviderHandler) LoginRequiredForcePrompt(h http.Handler) http.Handler
- func (o *ProviderHandler) LoginURL(redirect_to string, force_prompt bool) string
- func (o *ProviderHandler) Logout(ctx context.Context, w http.ResponseWriter) error
- func (o *ProviderHandler) LogoutURL(redirect_to string) string
- func (o *ProviderHandler) Provider() *Provider
- func (o *ProviderHandler) RequestOfflineTokens()
- func (o *ProviderHandler) Session(ctx context.Context) (*whsess.Session, error)
- func (o *ProviderHandler) Token(ctx context.Context) (*oauth2.Token, error)
- type RedirectURLs
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ProviderGroup ¶
type ProviderGroup struct {
// contains filtered or unexported fields
}
ProviderGroup is an http.Handler that keeps track of authentication for multiple OAuth2 providers.
Assuming OAuth2 providers have been configured for Facebook, Google, LinkedIn, and Github, ProviderGroup handles requests to the following paths:
- /all/logout
- /facebook/login
- /facebook/logout
- /facebook/_cb
- /google/login
- /google/logout
- /google/_cb
- /linkedin/login
- /linkedin/logout
- /linkedin/_cb
- /github/login
- /github/logout
- /github/_cb
ProviderGroup will also return associated state to you about each OAuth2 provider's state, in addition to a LoginRequired middleware and a Login URL generator.
func NewProviderGroup ¶
func NewProviderGroup(session_namespace string, group_base_url string, urls RedirectURLs, providers ...*Provider) (*ProviderGroup, error)
NewProviderGroup makes a provider group. Requires a session namespace (will be prepended to ":"+provider_name), the base URL of the ProviderGroup's http.Handler, a collection of URLs for redirecting, and a list of specific configured providers.
func (*ProviderGroup) Handler ¶
func (g *ProviderGroup) Handler(provider_name string) (rv *ProviderHandler, exists bool)
Handler returns a specific ProviderHandler given the Provider name
func (*ProviderGroup) LoggedIn ¶
func (g *ProviderGroup) LoggedIn(ctx context.Context) (bool, error)
LoggedIn returns true if the user is logged in with any provider
func (*ProviderGroup) LoginRequired ¶
func (g *ProviderGroup) LoginRequired(h http.Handler, login_redirect func(redirect_to string) (url string)) http.Handler
LoginRequired is a middleware for redirecting users to a login page if they aren't logged in yet. login_redirect should take the URL to redirect to after logging in and return a URL that will actually do the logging in. If you already know which provider a user should use, consider using (*ProviderHandler).LoginRequired instead, which doesn't require a login_redirect URL.
func (*ProviderGroup) LoginURL ¶
func (g *ProviderGroup) LoginURL(provider_name, redirect_to string, force_prompt bool) string
LoginURL returns the login URL for a given provider. redirect_to is the URL to navigate to after logging in, and force_prompt tells OAuth2 whether or not the login prompt should always be shown regardless of if the user is already logged in.
func (*ProviderGroup) LogoutAll ¶
func (g *ProviderGroup) LogoutAll(ctx context.Context, w http.ResponseWriter) error
LogoutAll will not return any HTTP response, but will simply prepare a response for logging a user out completely from all providers. If a user should log out of just a specific OAuth2 provider, use the Logout method on the associated ProviderHandler.
func (*ProviderGroup) LogoutAllURL ¶
func (g *ProviderGroup) LogoutAllURL(redirect_to string) string
LogoutAllURL returns the logout URL for all providers. redirect_to is the URL to navigate to after logging out.
func (*ProviderGroup) LogoutURL ¶
func (g *ProviderGroup) LogoutURL(provider_name, redirect_to string) string
LogoutURL returns the logout URL for a given provider. redirect_to is the URL to navigate to after logging out.
func (*ProviderGroup) Providers ¶
func (g *ProviderGroup) Providers() map[string]*ProviderHandler
Providers will return a map of all the currently known providers.
func (*ProviderGroup) Routes ¶
func (g *ProviderGroup) Routes( cb func(method, path string, annotations map[string]string))
Routes implements whroute.Lister
func (*ProviderGroup) ServeHTTP ¶
func (g *ProviderGroup) ServeHTTP(w http.ResponseWriter, r *http.Request)
type ProviderHandler ¶
ProviderHandler is an http.Handler that keeps track of authentication for a single OAuth2 provider
ProviderHandler handles requests to the following paths:
- /login
- /logout
- /_cb
ProviderHandler will also return associated state to you about its state, in addition to a LoginRequired middleware and a Login URL generator.
func NewProviderHandler ¶
func NewProviderHandler(provider *Provider, session_namespace string, handler_base_url string, urls RedirectURLs) *ProviderHandler
NewProviderHandler makes a provider handler. Requires a provider configuration, a session namespace, a base URL for the handler, and a collection of URLs for redirecting.
func (*ProviderHandler) LoggedIn ¶
func (o *ProviderHandler) LoggedIn(ctx context.Context) (bool, error)
LoggedIn returns true if the user is logged in with this provider
func (*ProviderHandler) LoginRequired ¶
func (o *ProviderHandler) LoginRequired(h http.Handler) http.Handler
LoginRequired is a middleware for redirecting users to a login page if they aren't logged in yet. If you are using a ProviderGroup and don't know which provider a user should use, consider using (*ProviderGroup).LoginRequired instead
func (*ProviderHandler) LoginRequiredForcePrompt ¶
func (o *ProviderHandler) LoginRequiredForcePrompt(h http.Handler) http.Handler
LoginRequiredForcePrompt is a middleware for redirecting users to a login page if they aren't logged in yet. If you are using a ProviderGroup and don't know which provider a user should use, consider using (*ProviderGroup).LoginRequired instead.
func (*ProviderHandler) LoginURL ¶
func (o *ProviderHandler) LoginURL(redirect_to string, force_prompt bool) string
LoginURL returns the login URL for this provider redirect_to is the URL to navigate to after logging in, and force_prompt tells OAuth2 whether or not the login prompt should always be shown regardless of if the user is already logged in.
func (*ProviderHandler) Logout ¶
func (o *ProviderHandler) Logout(ctx context.Context, w http.ResponseWriter) error
Logout prepares the request to log the user out of just this OAuth2 provider. If you're using a ProviderGroup you may be interested in LogoutAll.
func (*ProviderHandler) LogoutURL ¶
func (o *ProviderHandler) LogoutURL(redirect_to string) string
LogoutURL returns the logout URL for this provider redirect_to is the URL to navigate to after logging out.
func (*ProviderHandler) Provider ¶
func (o *ProviderHandler) Provider() *Provider
func (*ProviderHandler) RequestOfflineTokens ¶
func (o *ProviderHandler) RequestOfflineTokens()
RequestOfflineTokens tells the provider to request oauth2 tokens with AccessTypeOffline instead of AccessTypeOnline.
type RedirectURLs ¶
type RedirectURLs struct { // If a login URL isn't provided to redirect to after successful login, use // this one. DefaultLoginURL string // If a logout URL isn't provided to redirect to after successful logout, use // this one. DefaultLogoutURL string }
RedirectURLs contains a collection of URLs to redirect to in a variety of cases
Directories
¶
Path | Synopsis |
---|---|
examples
|
|
group
This example shows how to set up a web service that allows users to log in via multiple OAuth2 providers
|
This example shows how to set up a web service that allows users to log in via multiple OAuth2 providers |
one
This example shows how to set up a web service that allows users to log in via one single OAuth2 Provider
|
This example shows how to set up a web service that allows users to log in via one single OAuth2 Provider |