login

package
v0.0.3-alpha.4 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2020 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BrowserLoginPath         = "/self-service/browser/flows/login"
	BrowserLoginRequestsPath = "/self-service/browser/flows/requests/login"
)

Variables

View Source
var (
	ErrHookAbortRequest = errors.New("abort hook")

	ErrRequestExpired = herodot.ErrBadRequest.
						WithError("login request expired").
						WithReasonf(`The login request has expired. Please restart the flow.`)
)

Functions

func TestRequestPersister

func TestRequestPersister(p RequestPersister) func(t *testing.T)

Types

type ErrorHandler

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

func NewErrorHandler

func NewErrorHandler(d errorHandlerDependencies, c configuration.Provider) *ErrorHandler

func (*ErrorHandler) HandleLoginError

func (s *ErrorHandler) HandleLoginError(
	w http.ResponseWriter,
	r *http.Request,
	ct identity.CredentialsType,
	rr *Request,
	err error,
)

type ErrorHandlerProvider

type ErrorHandlerProvider interface{ LoginRequestErrorHandler() *ErrorHandler }

type Handler

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

func NewHandler

func NewHandler(d handlerDependencies, c configuration.Provider) *Handler

func (*Handler) NewLoginRequest

func (h *Handler) NewLoginRequest(w http.ResponseWriter, r *http.Request, redir func(request *Request) string) error

func (*Handler) RegisterAdminRoutes

func (h *Handler) RegisterAdminRoutes(admin *x.RouterAdmin)

func (*Handler) RegisterPublicRoutes

func (h *Handler) RegisterPublicRoutes(public *x.RouterPublic)

func (*Handler) WithTokenGenerator

func (h *Handler) WithTokenGenerator(f func(r *http.Request) string)

type HandlerProvider

type HandlerProvider interface {
	LoginHandler() *Handler
}

type HookExecutor

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

func NewHookExecutor

func NewHookExecutor(d loginExecutorDependencies, c configuration.Provider) *HookExecutor

func (*HookExecutor) PostLoginHook

func (e *HookExecutor) PostLoginHook(w http.ResponseWriter, r *http.Request, hooks []PostHookExecutor, a *Request, i *identity.Identity) error

func (*HookExecutor) PreLoginHook

func (e *HookExecutor) PreLoginHook(w http.ResponseWriter, r *http.Request, a *Request) error

type HookExecutorProvider

type HookExecutorProvider interface {
	LoginHookExecutor() *HookExecutor
}

type HooksProvider

type HooksProvider interface {
	PreLoginHooks() []PreHookExecutor
	PostLoginHooks(credentialsType identity.CredentialsType) []PostHookExecutor
}

type PostHookExecutor

type PostHookExecutor interface {
	ExecuteLoginPostHook(w http.ResponseWriter, r *http.Request, a *Request, s *session.Session) error
}

type PreHookExecutor

type PreHookExecutor interface {
	ExecuteLoginPreHook(w http.ResponseWriter, r *http.Request, a *Request) error
}

type Request

type Request struct {
	// ID represents the request's unique ID. When performing the login flow, this
	// represents the id in the login ui's query parameter: http://<urls.login_ui>/?request=<id>
	ID uuid.UUID `json:"id" faker:"uuid" rw:"r" db:"id"`

	// ExpiresAt is the time (UTC) when the request expires. If the user still wishes to log in,
	// a new request has to be initiated.
	ExpiresAt time.Time `json:"expires_at" faker:"time_type" db:"expires_at"`

	// IssuedAt is the time (UTC) when the request occurred.
	IssuedAt time.Time `json:"issued_at" faker:"time_type" db:"issued_at"`

	// RequestURL is the initial URL that was requested from ORY Kratos. It can be used
	// to forward information contained in the URL's path or query for example.
	RequestURL string `json:"request_url" db:"request_url"`

	// Active, if set, contains the login method that is being used. It is initially
	// not set.
	Active identity.CredentialsType `json:"active,omitempty" db:"active_method"`

	// Methods contains context for all enabled login methods. If a login request has been
	// processed, but for example the password is incorrect, this will contain error messages.
	Methods map[identity.CredentialsType]*RequestMethod `json:"methods" faker:"login_request_methods" db:"-"`

	// MethodsRaw is a helper struct field for gobuffalo.pop.
	MethodsRaw RequestMethodsRaw `json:"-" faker:"-" has_many:"selfservice_login_request_methods" fk_id:"selfservice_login_request_id"`

	// CreatedAt is a helper struct field for gobuffalo.pop.
	CreatedAt time.Time `json:"-" db:"created_at"`

	// UpdatedAt is a helper struct field for gobuffalo.pop.
	UpdatedAt time.Time `json:"-" db:"updated_at"`

	// CSRFToken contains the anti-csrf token associated with this request.
	CSRFToken string `json:"-" db:"csrf_token"`
}

swagger:model loginRequest

func NewLoginRequest

func NewLoginRequest(exp time.Duration, csrf string, r *http.Request) *Request

func (*Request) AfterCreate

func (r *Request) AfterCreate(c *pop.Connection) error

func (*Request) AfterFind

func (r *Request) AfterFind(_ *pop.Connection) error

func (*Request) AfterUpdate

func (r *Request) AfterUpdate(c *pop.Connection) error

func (*Request) BeforeSave

func (r *Request) BeforeSave(_ *pop.Connection) error

func (*Request) GetID

func (r *Request) GetID() uuid.UUID

func (Request) TableName

func (r Request) TableName() string

func (*Request) Valid

func (r *Request) Valid() error

type RequestMethod

type RequestMethod struct {
	// Method contains the request credentials type.
	Method identity.CredentialsType `json:"method" db:"method"`

	// Config is the credential type's config.
	Config *RequestMethodConfig `json:"config" db:"config"`

	// ID is a helper struct field for gobuffalo.pop.
	ID uuid.UUID `json:"-" db:"id" rw:"r"`

	// RequestID is a helper struct field for gobuffalo.pop.
	RequestID uuid.UUID `json:"-" db:"selfservice_login_request_id"`

	// Request is a helper struct field for gobuffalo.pop.
	Request *Request `json:"-" belongs_to:"selfservice_login_request" fk_id:"RequestID"`

	// CreatedAt is a helper struct field for gobuffalo.pop.
	CreatedAt time.Time `json:"-" db:"created_at"`

	// UpdatedAt is a helper struct field for gobuffalo.pop.
	UpdatedAt time.Time `json:"-" db:"updated_at"`
}

swagger:model loginRequestMethod

func (RequestMethod) TableName

func (u RequestMethod) TableName() string

type RequestMethodConfig

type RequestMethodConfig struct {
	RequestMethodConfigurator
}

swagger:model loginRequestMethodConfig

func (*RequestMethodConfig) MarshalJSON

func (c *RequestMethodConfig) MarshalJSON() ([]byte, error)

func (*RequestMethodConfig) Scan

func (c *RequestMethodConfig) Scan(value interface{}) error

func (*RequestMethodConfig) UnmarshalJSON

func (c *RequestMethodConfig) UnmarshalJSON(data []byte) error

func (*RequestMethodConfig) Value

func (c *RequestMethodConfig) Value() (driver.Value, error)

type RequestMethodConfigurator

type RequestMethodConfigurator interface {
	form.ErrorParser
	form.ValueSetter
	form.Resetter
	form.CSRFSetter
}

swagger:ignore

type RequestMethods

type RequestMethods map[identity.CredentialsType]*RequestMethod

func (RequestMethods) TableName

func (u RequestMethods) TableName() string

type RequestMethodsRaw

type RequestMethodsRaw []RequestMethod // workaround for https://github.com/gobuffalo/pop/pull/478

func (RequestMethodsRaw) TableName

func (u RequestMethodsRaw) TableName() string

type RequestPersistenceProvider

type RequestPersistenceProvider interface {
	LoginRequestPersister() RequestPersister
}

type RequestPersister

type RequestPersister interface {
	CreateLoginRequest(context.Context, *Request) error
	GetLoginRequest(context.Context, uuid.UUID) (*Request, error)
	UpdateLoginRequest(context.Context, uuid.UUID, identity.CredentialsType, *RequestMethod) error
}

type Strategies

type Strategies []Strategy

func (Strategies) MustStrategy

func (s Strategies) MustStrategy(id identity.CredentialsType) Strategy

func (Strategies) RegisterPublicRoutes

func (s Strategies) RegisterPublicRoutes(r *x.RouterPublic)

func (Strategies) Strategy

func (s Strategies) Strategy(id identity.CredentialsType) (Strategy, error)

type Strategy

type Strategy interface {
	LoginStrategyID() identity.CredentialsType
	RegisterLoginRoutes(*x.RouterPublic)
	PopulateLoginMethod(r *http.Request, sr *Request) error
}

type StrategyProvider

type StrategyProvider interface {
	LoginStrategies() Strategies
}

Jump to

Keyboard shortcuts

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