lark

package
v1.63.11 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2020 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package gitlab implements the OAuth2 protocol for authenticating users through gitlab. This package can be used as a reference implementation of an OAuth2 provider for Goth.

Index

Constants

This section is empty.

Variables

View Source
var (
	AppAuthURL = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/"
	AuthURL    = "https://open.feishu.cn/open-apis/authen/v1/index"
	TokenURL   = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/"
	ProfileURL = "https://open.feishu.cn/open-apis/authen/v1/access_token"
)

These vars define the Authentication, Token, and Profile URLS for Gitlab. If using Gitlab CE or EE, you should change these values before calling New.

Examples:

gitlab.AuthURL = "https://gitlab.acme.com/oauth/authorize
gitlab.TokenURL = "https://gitlab.acme.com/oauth/token
gitlab.ProfileURL = "https://gitlab.acme.com/api/v3/user

Functions

func ContextClient added in v1.63.8

func ContextClient(ctx context.Context) *http.Client

Types

type AuthCodeOption added in v1.63.8

type AuthCodeOption interface {
	// contains filtered or unexported methods
}

type Config added in v1.63.8

type Config struct {
	// ClientID is the application's ID.
	AppID string

	// ClientSecret is the application's secret.
	AppSecret string
	AppToken  string

	// Endpoint contains the resource server's token endpoint
	// URLs. These are constants specific to each server and are
	// often available via site-specific packages, such as
	// google.Endpoint or github.Endpoint.
	Endpoint Endpoint

	// RedirectURL is the URL to redirect users going through
	// the OAuth flow, after the resource owner's URLs.
	RedirectURL string

	// Scope specifies optional requested permissions.
	Scopes []string
}

func (*Config) AuthCodeURL added in v1.63.9

func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string

func (*Config) Exchange added in v1.63.8

func (c *Config) Exchange(ctx context.Context, code string, opts ...AuthCodeOption) (*Token, error)

type ContextKey added in v1.63.8

type ContextKey struct{}

ContextKey is just an empty struct. It exists so HTTPClient can be an immutable public variable with a unique type. It's immutable because nobody else can create a ContextKey, being unexported.

var HTTPClient ContextKey

HTTPClient is the context key to use with golang.org/x/net/context's WithValue function to associate an *http.Client value with a context.

type Endpoint added in v1.63.8

type Endpoint struct {
	AuthURL    string
	TokenURL   string
	ProfileURL string
}

type Provider

type Provider struct {
	ClientKey   string
	Secret      string
	AppToken    string
	CallbackURL string
	HTTPClient  *http.Client
	// contains filtered or unexported fields
}

Provider is the implementation of `goth.Provider` for accessing Gitlab.

func New

func New(clientKey, secret, callbackURL string, scopes ...string) *Provider

New creates a new Gitlab provider and sets up important connection details. You should always call `gitlab.New` to get a new provider. Never try to create one manually.

func NewCustomisedURL

func NewCustomisedURL(clientKey, secret, callbackURL, authURL, tokenURL, profileURL string, scopes ...string) *Provider

NewCustomisedURL is similar to New(...) but can be used to set custom URLs to connect to

func (*Provider) BeginAuth

func (p *Provider) BeginAuth(state string) (goth.Session, error)

BeginAuth asks lark for an authentication end-point.

func (*Provider) Client

func (p *Provider) Client() *http.Client

func (*Provider) Debug

func (p *Provider) Debug(debug bool)

Debug is a no-op for the lark package.

func (*Provider) FetchUser

func (p *Provider) FetchUser(session goth.Session) (goth.User, error)

FetchUser will go to lark and access basic information about the user.

func (*Provider) Name

func (p *Provider) Name() string

Name is the name used to retrieve this provider later.

func (*Provider) RefreshToken

func (p *Provider) RefreshToken(refreshToken string) (*oauth2.Token, error)

RefreshToken get new access token based on the refresh token

func (*Provider) RefreshTokenAvailable

func (p *Provider) RefreshTokenAvailable() bool

RefreshTokenAvailable refresh token is provided by auth provider or not

func (*Provider) SetName

func (p *Provider) SetName(name string)

SetName is to update the name of the provider (needed in case of multiple providers of 1 type)

func (*Provider) UnmarshalSession

func (p *Provider) UnmarshalSession(data string) (goth.Session, error)

UnmarshalSession wil unmarshal a JSON string into a session.

type RetrieveError added in v1.63.8

type RetrieveError struct {
	Response *http.Response
	// Body is the body that was consumed by reading Response.Body.
	// It may be truncated.
	Body []byte
}

func (*RetrieveError) Error added in v1.63.8

func (r *RetrieveError) Error() string

type Session

type Session struct {
	AuthURL      string
	AccessToken  string
	RefreshToken string
	ExpiresAt    time.Time
}

Session stores data during the auth process with Gitlab.

func (*Session) Authorize

func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string, error)

Authorize the session with Gitlab and return the access token to be stored for future use.

func (Session) GetAuthURL

func (s Session) GetAuthURL() (string, error)

GetAuthURL will return the URL set by calling the `BeginAuth` function on the Gitlab provider.

func (Session) Marshal

func (s Session) Marshal() string

Marshal the session into a string

func (Session) String

func (s Session) String() string

type Token added in v1.63.8

type Token struct {
	// AccessToken is the token that authorizes and authenticates
	// the requests.
	AccessToken string `json:"app_access_token"`

	// TokenType is the type of token.
	// The Type method returns either this or "Bearer", the default.
	TokenType string `json:"token_type,omitempty"`

	// RefreshToken is a token that's used by the application
	// (as opposed to the user) to refresh the access token
	// if it expires.
	RefreshToken string `json:"refresh_token,omitempty"`

	// Expiry is the optional expiration time of the access token.
	//
	// If zero, TokenSource implementations will reuse the same
	// token forever and RefreshToken or equivalent
	// mechanisms for that TokenSource will not be used.
	Expiry time.Time `json:"expiry,omitempty"`

	// raw optionally contains extra metadata from the server
	// when updating a token.
	Raw interface{}
}

func RetrieveToken added in v1.63.8

func RetrieveToken(ctx context.Context, clientID, clientSecret, tokenURL string, v url.Values) (*Token, error)

func (*Token) SetAuthHeader added in v1.63.8

func (t *Token) SetAuthHeader(r *http.Request)

func (*Token) Type added in v1.63.8

func (t *Token) Type() string

Type returns t.TokenType if non-empty, else "Bearer".

Jump to

Keyboard shortcuts

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