auth

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2022 License: MIT Imports: 7 Imported by: 72

Documentation

Index

Constants

View Source
const NameFacebook string = "facebook"

NameFacebook is the unique name of the Facebook provider.

View Source
const NameGithub string = "github"

NameGithub is the unique name of the Github provider.

View Source
const NameGitlab string = "gitlab"

NameGitlab is the unique name of the Gitlab provider.

View Source
const NameGoogle string = "google"

NameGoogle is the unique name of the Google provider.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthUser

type AuthUser struct {
	Id        string `json:"id"`
	Name      string `json:"name"`
	Email     string `json:"email"`
	AvatarUrl string `json:"avatarUrl"`
}

AuthUser defines a standardized oauth2 user data structure.

type Facebook

type Facebook struct {
	// contains filtered or unexported fields
}

Facebook allows authentication via Facebook OAuth2.

func NewFacebookProvider

func NewFacebookProvider() *Facebook

NewFacebookProvider creates new Facebook provider instance with some defaults.

func (Facebook) AuthUrl

func (p Facebook) AuthUrl() string

AuthUrl implements Provider.AuthUrl interface.

func (Facebook) BuildAuthUrl

func (p Facebook) BuildAuthUrl(state string, opts ...oauth2.AuthCodeOption) string

BuildAuthUrl implements Provider.BuildAuthUrl interface.

func (Facebook) Client

func (p Facebook) Client(token *oauth2.Token) *http.Client

Client implements Provider.Client interface.

func (Facebook) ClientId

func (p Facebook) ClientId() string

ClientId implements Provider.ClientId interface.

func (Facebook) ClientSecret

func (p Facebook) ClientSecret() string

ClientSecret implements Provider.ClientSecret interface.

func (*Facebook) FetchAuthUser

func (p *Facebook) FetchAuthUser(token *oauth2.Token) (*AuthUser, error)

FetchAuthUser returns an AuthUser instance based on the Facebook's user api.

func (Facebook) FetchRawUserData

func (p Facebook) FetchRawUserData(token *oauth2.Token, result any) error

FetchRawUserData implements Provider.FetchRawUserData interface.

func (Facebook) FetchToken

func (p Facebook) FetchToken(code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

FetchToken implements Provider.FetchToken interface.

func (Facebook) RedirectUrl

func (p Facebook) RedirectUrl() string

RedirectUrl implements Provider.RedirectUrl interface.

func (Facebook) Scopes

func (p Facebook) Scopes() []string

Scopes implements Provider.Scopes interface.

func (Facebook) SetAuthUrl

func (p Facebook) SetAuthUrl(url string)

SetAuthUrl implements Provider.SetAuthUrl interface.

func (Facebook) SetClientId

func (p Facebook) SetClientId(clientId string)

SetClientId implements Provider.SetClientId interface.

func (Facebook) SetClientSecret

func (p Facebook) SetClientSecret(secret string)

SetClientSecret implements Provider.SetClientSecret interface.

func (Facebook) SetRedirectUrl

func (p Facebook) SetRedirectUrl(url string)

SetRedirectUrl implements Provider.SetRedirectUrl interface.

func (Facebook) SetScopes

func (p Facebook) SetScopes(scopes []string)

SetScopes implements Provider.SetScopes interface.

func (Facebook) SetTokenUrl

func (p Facebook) SetTokenUrl(url string)

SetTokenUrl implements Provider.SetTokenUrl interface.

func (Facebook) SetUserApiUrl

func (p Facebook) SetUserApiUrl(url string)

SetUserApiUrl implements Provider.SetUserApiUrl interface.

func (Facebook) TokenUrl

func (p Facebook) TokenUrl() string

TokenUrl implements Provider.TokenUrl interface.

func (Facebook) UserApiUrl

func (p Facebook) UserApiUrl() string

UserApiUrl implements Provider.UserApiUrl interface.

type Github

type Github struct {
	// contains filtered or unexported fields
}

Github allows authentication via Github OAuth2.

func NewGithubProvider

func NewGithubProvider() *Github

NewGithubProvider creates new Github provider instance with some defaults.

func (Github) AuthUrl

func (p Github) AuthUrl() string

AuthUrl implements Provider.AuthUrl interface.

func (Github) BuildAuthUrl

func (p Github) BuildAuthUrl(state string, opts ...oauth2.AuthCodeOption) string

BuildAuthUrl implements Provider.BuildAuthUrl interface.

func (Github) Client

func (p Github) Client(token *oauth2.Token) *http.Client

Client implements Provider.Client interface.

func (Github) ClientId

func (p Github) ClientId() string

ClientId implements Provider.ClientId interface.

func (Github) ClientSecret

func (p Github) ClientSecret() string

ClientSecret implements Provider.ClientSecret interface.

func (*Github) FetchAuthUser

func (p *Github) FetchAuthUser(token *oauth2.Token) (*AuthUser, error)

FetchAuthUser returns an AuthUser instance based the Github's user api.

func (Github) FetchRawUserData

func (p Github) FetchRawUserData(token *oauth2.Token, result any) error

FetchRawUserData implements Provider.FetchRawUserData interface.

func (Github) FetchToken

func (p Github) FetchToken(code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

FetchToken implements Provider.FetchToken interface.

func (Github) RedirectUrl

func (p Github) RedirectUrl() string

RedirectUrl implements Provider.RedirectUrl interface.

func (Github) Scopes

func (p Github) Scopes() []string

Scopes implements Provider.Scopes interface.

func (Github) SetAuthUrl

func (p Github) SetAuthUrl(url string)

SetAuthUrl implements Provider.SetAuthUrl interface.

func (Github) SetClientId

func (p Github) SetClientId(clientId string)

SetClientId implements Provider.SetClientId interface.

func (Github) SetClientSecret

func (p Github) SetClientSecret(secret string)

SetClientSecret implements Provider.SetClientSecret interface.

func (Github) SetRedirectUrl

func (p Github) SetRedirectUrl(url string)

SetRedirectUrl implements Provider.SetRedirectUrl interface.

func (Github) SetScopes

func (p Github) SetScopes(scopes []string)

SetScopes implements Provider.SetScopes interface.

func (Github) SetTokenUrl

func (p Github) SetTokenUrl(url string)

SetTokenUrl implements Provider.SetTokenUrl interface.

func (Github) SetUserApiUrl

func (p Github) SetUserApiUrl(url string)

SetUserApiUrl implements Provider.SetUserApiUrl interface.

func (Github) TokenUrl

func (p Github) TokenUrl() string

TokenUrl implements Provider.TokenUrl interface.

func (Github) UserApiUrl

func (p Github) UserApiUrl() string

UserApiUrl implements Provider.UserApiUrl interface.

type Gitlab

type Gitlab struct {
	// contains filtered or unexported fields
}

Gitlab allows authentication via Gitlab OAuth2.

func NewGitlabProvider

func NewGitlabProvider() *Gitlab

NewGitlabProvider creates new Gitlab provider instance with some defaults.

func (Gitlab) AuthUrl

func (p Gitlab) AuthUrl() string

AuthUrl implements Provider.AuthUrl interface.

func (Gitlab) BuildAuthUrl

func (p Gitlab) BuildAuthUrl(state string, opts ...oauth2.AuthCodeOption) string

BuildAuthUrl implements Provider.BuildAuthUrl interface.

func (Gitlab) Client

func (p Gitlab) Client(token *oauth2.Token) *http.Client

Client implements Provider.Client interface.

func (Gitlab) ClientId

func (p Gitlab) ClientId() string

ClientId implements Provider.ClientId interface.

func (Gitlab) ClientSecret

func (p Gitlab) ClientSecret() string

ClientSecret implements Provider.ClientSecret interface.

func (*Gitlab) FetchAuthUser

func (p *Gitlab) FetchAuthUser(token *oauth2.Token) (*AuthUser, error)

FetchAuthUser returns an AuthUser instance based the Gitlab's user api.

func (Gitlab) FetchRawUserData

func (p Gitlab) FetchRawUserData(token *oauth2.Token, result any) error

FetchRawUserData implements Provider.FetchRawUserData interface.

func (Gitlab) FetchToken

func (p Gitlab) FetchToken(code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

FetchToken implements Provider.FetchToken interface.

func (Gitlab) RedirectUrl

func (p Gitlab) RedirectUrl() string

RedirectUrl implements Provider.RedirectUrl interface.

func (Gitlab) Scopes

func (p Gitlab) Scopes() []string

Scopes implements Provider.Scopes interface.

func (Gitlab) SetAuthUrl

func (p Gitlab) SetAuthUrl(url string)

SetAuthUrl implements Provider.SetAuthUrl interface.

func (Gitlab) SetClientId

func (p Gitlab) SetClientId(clientId string)

SetClientId implements Provider.SetClientId interface.

func (Gitlab) SetClientSecret

func (p Gitlab) SetClientSecret(secret string)

SetClientSecret implements Provider.SetClientSecret interface.

func (Gitlab) SetRedirectUrl

func (p Gitlab) SetRedirectUrl(url string)

SetRedirectUrl implements Provider.SetRedirectUrl interface.

func (Gitlab) SetScopes

func (p Gitlab) SetScopes(scopes []string)

SetScopes implements Provider.SetScopes interface.

func (Gitlab) SetTokenUrl

func (p Gitlab) SetTokenUrl(url string)

SetTokenUrl implements Provider.SetTokenUrl interface.

func (Gitlab) SetUserApiUrl

func (p Gitlab) SetUserApiUrl(url string)

SetUserApiUrl implements Provider.SetUserApiUrl interface.

func (Gitlab) TokenUrl

func (p Gitlab) TokenUrl() string

TokenUrl implements Provider.TokenUrl interface.

func (Gitlab) UserApiUrl

func (p Gitlab) UserApiUrl() string

UserApiUrl implements Provider.UserApiUrl interface.

type Google

type Google struct {
	// contains filtered or unexported fields
}

Google allows authentication via Google OAuth2.

func NewGoogleProvider

func NewGoogleProvider() *Google

NewGoogleProvider creates new Google provider instance with some defaults.

func (Google) AuthUrl

func (p Google) AuthUrl() string

AuthUrl implements Provider.AuthUrl interface.

func (Google) BuildAuthUrl

func (p Google) BuildAuthUrl(state string, opts ...oauth2.AuthCodeOption) string

BuildAuthUrl implements Provider.BuildAuthUrl interface.

func (Google) Client

func (p Google) Client(token *oauth2.Token) *http.Client

Client implements Provider.Client interface.

func (Google) ClientId

func (p Google) ClientId() string

ClientId implements Provider.ClientId interface.

func (Google) ClientSecret

func (p Google) ClientSecret() string

ClientSecret implements Provider.ClientSecret interface.

func (*Google) FetchAuthUser

func (p *Google) FetchAuthUser(token *oauth2.Token) (*AuthUser, error)

FetchAuthUser returns an AuthUser instance based the Google's user api.

func (Google) FetchRawUserData

func (p Google) FetchRawUserData(token *oauth2.Token, result any) error

FetchRawUserData implements Provider.FetchRawUserData interface.

func (Google) FetchToken

func (p Google) FetchToken(code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

FetchToken implements Provider.FetchToken interface.

func (Google) RedirectUrl

func (p Google) RedirectUrl() string

RedirectUrl implements Provider.RedirectUrl interface.

func (Google) Scopes

func (p Google) Scopes() []string

Scopes implements Provider.Scopes interface.

func (Google) SetAuthUrl

func (p Google) SetAuthUrl(url string)

SetAuthUrl implements Provider.SetAuthUrl interface.

func (Google) SetClientId

func (p Google) SetClientId(clientId string)

SetClientId implements Provider.SetClientId interface.

func (Google) SetClientSecret

func (p Google) SetClientSecret(secret string)

SetClientSecret implements Provider.SetClientSecret interface.

func (Google) SetRedirectUrl

func (p Google) SetRedirectUrl(url string)

SetRedirectUrl implements Provider.SetRedirectUrl interface.

func (Google) SetScopes

func (p Google) SetScopes(scopes []string)

SetScopes implements Provider.SetScopes interface.

func (Google) SetTokenUrl

func (p Google) SetTokenUrl(url string)

SetTokenUrl implements Provider.SetTokenUrl interface.

func (Google) SetUserApiUrl

func (p Google) SetUserApiUrl(url string)

SetUserApiUrl implements Provider.SetUserApiUrl interface.

func (Google) TokenUrl

func (p Google) TokenUrl() string

TokenUrl implements Provider.TokenUrl interface.

func (Google) UserApiUrl

func (p Google) UserApiUrl() string

UserApiUrl implements Provider.UserApiUrl interface.

type Provider

type Provider interface {
	// Scopes returns the provider access permissions that will be requested.
	Scopes() []string

	// SetScopes sets the provider access permissions that will be requested later.
	SetScopes(scopes []string)

	// ClientId returns the provider client's app ID.
	ClientId() string

	// SetClientId sets the provider client's ID.
	SetClientId(clientId string)

	// ClientId returns the provider client's app secret.
	ClientSecret() string

	// SetClientSecret sets the provider client's app secret.
	SetClientSecret(secret string)

	// RedirectUrl returns the end address to redirect the user
	// going through the OAuth flow.
	RedirectUrl() string

	// SetRedirectUrl sets the provider's RedirectUrl.
	SetRedirectUrl(url string)

	// AuthUrl returns the provider's authorization service url.
	AuthUrl() string

	// SetAuthUrl sets the provider's AuthUrl.
	SetAuthUrl(url string)

	// TokenUrl returns the provider's token exchange service url.
	TokenUrl() string

	// SetTokenUrl sets the provider's TokenUrl.
	SetTokenUrl(url string)

	// UserApiUrl returns the provider's user info api url.
	UserApiUrl() string

	// SetUserApiUrl sets the provider's UserApiUrl.
	SetUserApiUrl(url string)

	// Client returns an http client using the provided token.
	Client(token *oauth2.Token) *http.Client

	// BuildAuthUrl returns a URL to the provider's consent page
	// that asks for permissions for the required scopes explicitly.
	BuildAuthUrl(state string, opts ...oauth2.AuthCodeOption) string

	// FetchToken converts an authorization code to token.
	FetchToken(code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

	// FetchRawUserData requests and marshalizes into `result` the
	// the OAuth user api response.
	FetchRawUserData(token *oauth2.Token, result any) error

	// FetchAuthUser is similar to FetchRawUserData, but normalizes and
	// marshalizes the user api response into a standardized AuthUser struct.
	FetchAuthUser(token *oauth2.Token) (user *AuthUser, err error)
}

Provider defines a common interface for an OAuth2 client.

func NewProviderByName

func NewProviderByName(name string) (Provider, error)

NewProviderByName returns a new preconfigured provider instance by its name identifier.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL