models

package
v1.14.0 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2021 License: MIT Imports: 13 Imported by: 3

Documentation

Index

Constants

View Source
const (
	BodyReadError                = "RequestBodyReadError"
	JSONMarshalError             = "JSONMarshalError"
	JSONUnmarshalError           = "JSONUnmarshalError"
	WriteResponseError           = "WriteResponseError"
	InvalidForenameError         = "InvalidForename"
	InvalidSurnameError          = "InvalidSurname"
	InvalidEmailError            = "InvalidEmail"
	InvalidTokenError            = "InvalidToken"
	InternalError                = "InternalServerError"
	NotFoundError                = "NotFound"
	UserNotFoundError            = "UserNotFound"
	GroupExistsError             = "GroupExists"
	DeliveryFailureError         = "DeliveryFailure"
	InvalidCodeError             = "InvalidCode"
	ExpiredCodeError             = "ExpiredCode"
	InvalidFieldError            = "InvalidField"
	InvalidPasswordError         = "InvalidPassword"
	LimitExceededError           = "LimitExceeded"
	NotAuthorisedError           = "NotAuthorised"
	PasswordResetRequiredError   = "PasswordResetRequired"
	TooManyFailedAttemptsError   = "TooManyFailedAttempts"
	TooManyRequestsError         = "TooManyRequests"
	UserNotConfirmedError        = "UserNotConfirmed"
	UsernameExistsError          = "UsernameExists"
	MissingConfigError           = "MissingConfig"
	UnknownRequestTypeError      = "UnknownRequestType"
	NotImplementedError          = "NotImplemented"
	InvalidChallengeSessionError = "InvalidChallengeSession"
)

API error codes

View Source
const (
	MissingAuthorizationTokenDescription   = "no Authorization token was provided"
	MissingRefreshTokenDescription         = "no Refresh token was provided"
	MissingIDTokenDescription              = "no ID token was provided"
	MalformedIDTokenDescription            = "the ID token could not be parsed"
	MalformedAuthorizationTokenDescription = "the authorization token does not meet the required format"
	ErrorMarshalFailedDescription          = "failed to marshal the error"
	ErrorUnmarshalFailedDescription        = "failed to unmarshal the request body"
	WriteResponseFailedDescription         = "failed to write http response"
	CastingAWSErrorFailedDescription       = "failed to cast error to AWS error"
	UnrecognisedCognitoResponseDescription = "unexpected response from cognito"
	BodyReadFailedDescription              = "endpoint returned an error reading the request body"
	InvalidPasswordDescription             = "the submitted password could not be validated"
	PasswordGenerationErrorDescription     = "failed to generate a valid password"
	InvalidForenameErrorDescription        = "the submitted user's forename could not be validated"
	InvalidSurnameErrorDescription         = "the submitted user's lastname could not be validated"
	InvalidEmailDescription                = "the submitted email could not be validated"
	DuplicateEmailDescription              = "account using email address found"
	SignInFailedDescription                = "Incorrect username or password."
	SignInAttemptsExceededDescription      = "Password attempts exceeded"
	MissingConfigDescription               = "required configuration setting is missing"
	UnknownPasswordChangeTypeDescription   = "unknown password change type received"
	NotImplementedDescription              = "this feature has not been implemented yet"
	InvalidChallengeSessionDescription     = "no valid auth challenge session was provided"
	InvalidTokenDescription                = "the submitted token could not be validated"
)

API error descriptions

View Source
const (
	AdminRoleGroup     = "role-admin"
	PublisherRoleGroup = "role-publisher"
)
View Source
const (
	NewPasswordRequiredType = "NewPasswordRequired"
	ForgottenPasswordType   = "ForgottenPassword"
)

Variables

View Source
var CognitoErrorMapping = map[string]string{
	cognitoidentityprovider.ErrCodeInternalErrorException:          InternalError,
	cognitoidentityprovider.ErrCodeCodeDeliveryFailureException:    DeliveryFailureError,
	cognitoidentityprovider.ErrCodeCodeMismatchException:           InvalidCodeError,
	cognitoidentityprovider.ErrCodeConcurrentModificationException: InternalError,
	cognitoidentityprovider.ErrCodeExpiredCodeException:            ExpiredCodeError,
	cognitoidentityprovider.ErrCodeGroupExistsException:            GroupExistsError,
	cognitoidentityprovider.ErrCodeInvalidOAuthFlowException:       InternalError,
	cognitoidentityprovider.ErrCodeInvalidParameterException:       InvalidFieldError,
	cognitoidentityprovider.ErrCodeInvalidPasswordException:        InvalidPasswordError,
	cognitoidentityprovider.ErrCodeLimitExceededException:          LimitExceededError,
	cognitoidentityprovider.ErrCodeNotAuthorizedException:          NotAuthorisedError,
	cognitoidentityprovider.ErrCodePasswordResetRequiredException:  PasswordResetRequiredError,
	cognitoidentityprovider.ErrCodeResourceNotFoundException:       NotFoundError,
	cognitoidentityprovider.ErrCodeTooManyFailedAttemptsException:  TooManyFailedAttemptsError,
	cognitoidentityprovider.ErrCodeTooManyRequestsException:        TooManyRequestsError,
	cognitoidentityprovider.ErrCodeUserNotConfirmedException:       UserNotConfirmedError,
	cognitoidentityprovider.ErrCodeUserNotFoundException:           UserNotFoundError,
	cognitoidentityprovider.ErrCodeUsernameExistsException:         UsernameExistsError,
	request.ErrCodeSerialization:                                   InternalError,
	request.ErrCodeRead:                                            InternalError,
	request.ErrCodeResponseTimeout:                                 InternalError,
	request.ErrCodeInvalidPresignExpire:                            InternalError,
	request.CanceledErrorCode:                                      InternalError,
	request.ErrCodeRequestError:                                    InternalError,
}

Mapping Cognito error codes to API error codes

Functions

func MapCognitoErrorToLocalError added in v1.8.0

func MapCognitoErrorToLocalError(ctx context.Context, cognitoErr awserr.Error) string

Types

type AccessToken added in v1.8.0

type AccessToken struct {
	AuthHeader  string
	TokenString string
}

func (*AccessToken) GenerateSignOutRequest added in v1.8.0

func (t *AccessToken) GenerateSignOutRequest() *cognitoidentityprovider.GlobalSignOutInput

func (*AccessToken) Validate added in v1.8.0

func (t *AccessToken) Validate(ctx context.Context) *Error

type ChangePassword added in v1.10.0

type ChangePassword struct {
	ChangeType        string `json:"type"`
	Session           string `json:"session"`
	Email             string `json:"email"`
	NewPassword       string `json:"password"`
	VerificationToken string `json:"verification_token"`
}

func (ChangePassword) BuildAuthChallengeResponseRequest added in v1.10.0

func (p ChangePassword) BuildAuthChallengeResponseRequest(clientSecret string, clientId string, challengeName string) *cognitoidentityprovider.RespondToAuthChallengeInput

BuildAuthChallengeResponseRequest generates a RespondToAuthChallengeInput for Cognito

func (ChangePassword) BuildAuthChallengeSuccessfulJsonResponse added in v1.10.0

func (p ChangePassword) BuildAuthChallengeSuccessfulJsonResponse(ctx context.Context, result *cognitoidentityprovider.RespondToAuthChallengeOutput) ([]byte, error)

BuildAuthChallengeSuccessfulJsonResponse builds the ChangePassword response json for client responses to NewPasswordRequired changes

func (ChangePassword) BuildConfirmForgotPasswordRequest added in v1.14.0

func (p ChangePassword) BuildConfirmForgotPasswordRequest(clientSecret string, clientId string) *cognitoidentityprovider.ConfirmForgotPasswordInput

func (ChangePassword) ValidateForgottenPasswordRequiredRequest added in v1.14.0

func (p ChangePassword) ValidateForgottenPasswordRequiredRequest(ctx context.Context) []error

func (ChangePassword) ValidateNewPasswordRequiredRequest added in v1.10.0

func (p ChangePassword) ValidateNewPasswordRequiredRequest(ctx context.Context) []error

ValidateNewPasswordRequiredRequest validates the required fields have been submitted and meet the basic structure requirements

type CreateUserInput

type CreateUserInput struct {
	UserInput *cognitoidentityprovider.AdminCreateUserInput
}

type CreateUserOutput

type CreateUserOutput struct {
	UserOutput *cognitoidentityprovider.AdminCreateUserOutput
}

type Error added in v1.8.0

type Error struct {
	Cause       error  `json:"-"`
	Code        string `json:"code"`
	Description string `json:"description"`
}

func NewCognitoError added in v1.8.0

func NewCognitoError(ctx context.Context, err error, errContext string) *Error

func NewError added in v1.8.0

func NewError(ctx context.Context, cause error, code string, description string) *Error

func NewValidationError added in v1.8.0

func NewValidationError(ctx context.Context, code string, description string) *Error

func (*Error) Error added in v1.8.0

func (e *Error) Error() string

type ErrorResponse added in v1.8.0

type ErrorResponse struct {
	Errors  []error           `json:"errors"`
	Status  int               `json:"-"`
	Headers map[string]string `json:"-"`
}

func NewErrorResponse added in v1.8.0

func NewErrorResponse(statusCode int, headers map[string]string, errors ...error) *ErrorResponse

type Group added in v1.13.0

type Group struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Precedence  int64  `json:"precedence"`
}

Type to map for the Cognito GroupType object

func NewAdminRoleGroup added in v1.13.0

func NewAdminRoleGroup() Group

Constructor for a new instance of the admin role group

func NewPublisherRoleGroup added in v1.13.0

func NewPublisherRoleGroup() Group

Constructor for a new instance of the publisher role group

func (*Group) BuildCreateGroupRequest added in v1.13.0

func (g *Group) BuildCreateGroupRequest(userPoolId string) *cognitoidentityprovider.CreateGroupInput

BuildCreateGroupRequest builds a correctly populated CreateGroupInput object using the Groups values

func (*Group) BuildGetGroupRequest added in v1.13.0

func (g *Group) BuildGetGroupRequest(userPoolId string) *cognitoidentityprovider.GetGroupInput

BuildCreateGroupRequest builds a correctly populated GetGroupInput object using the Groups values

type IdClaims

type IdClaims struct {
	Sub           string `json:"sub"`
	Aud           string `json:"aud"`
	EmailVerified bool   `json:"email_verified"`
	TokenUse      string `json:"token_use"`
	AuthTime      int    `json:"auth_time"`
	Iss           string `json:"iss"`
	CognitoUser   string `json:"cognito:username"`
	Exp           int    `json:"exp"`
	GivenName     string `json:"given_name"`
	Iat           int    `json:"iat"`
	Email         string `json:"email"`
	jwt.StandardClaims
}

type IdToken

type IdToken struct {
	TokenString string
	Claims      IdClaims
}

func (*IdToken) ParseWithoutValidating

func (t *IdToken) ParseWithoutValidating(ctx context.Context, tokenString string) *Error

ParseWithoutValidating parses the claims in an ID token JWT in to a IdClaims struct without validating the token

func (*IdToken) Validate

func (t *IdToken) Validate(ctx context.Context) *Error

Validate validates the existence of a JWT string and that it is correctly formatting, storing the tokens claims in an IdClaims struct

type ListUsersInput

type ListUsersInput struct {
	ListUsersInput *cognitoidentityprovider.ListUsersInput
}

type ListUsersOutput

type ListUsersOutput struct {
	ListUsersOutput *cognitoidentityprovider.ListUsersOutput
}

type PasswordReset added in v1.11.0

type PasswordReset struct {
	Email string `json:"email"`
}

func (PasswordReset) BuildCognitoRequest added in v1.11.0

func (p PasswordReset) BuildCognitoRequest(clientSecret string, clientId string) *cognitoidentityprovider.ForgotPasswordInput

func (*PasswordReset) Validate added in v1.11.0

func (p *PasswordReset) Validate(ctx context.Context) error

type RefreshToken

type RefreshToken struct {
	TokenString string
}

func (*RefreshToken) BuildSuccessfulJsonResponse added in v1.8.0

func (t *RefreshToken) BuildSuccessfulJsonResponse(ctx context.Context, result *cognitoidentityprovider.InitiateAuthOutput) ([]byte, error)

func (*RefreshToken) GenerateRefreshRequest

func (t *RefreshToken) GenerateRefreshRequest(clientSecret string, username string, clientId string) *cognitoidentityprovider.InitiateAuthInput

GenerateRefreshRequest produces a Cognito InitiateAuthInput struct for refreshing a users current session

func (*RefreshToken) Validate

func (t *RefreshToken) Validate(ctx context.Context) *Error

Validate validates the existence of a JWT string

type SuccessResponse added in v1.8.0

type SuccessResponse struct {
	Body    []byte            `json:"-"`
	Status  int               `json:"-"`
	Headers map[string]string `json:"-"`
}

func NewSuccessResponse added in v1.8.0

func NewSuccessResponse(jsonBody []byte, statusCode int, headers map[string]string) *SuccessResponse

type UserParams

type UserParams struct {
	Forename string   `json:"forename"`
	Lastname string   `json:"lastname"`
	Email    string   `json:"email"`
	Password string   `json:"-"`
	Groups   []string `json:"groups"`
	Status   string   `json:"status"`
	ID       string   `json:"id"`
}

Model for the User

func (UserParams) BuildAdminGetUserRequest added in v1.12.0

func (p UserParams) BuildAdminGetUserRequest(userPoolId string) *cognitoidentityprovider.AdminGetUserInput

BuildCreateUserRequest generates a AdminCreateUserInput for Cognito

func (UserParams) BuildCreateUserRequest added in v1.8.0

func (p UserParams) BuildCreateUserRequest(userId string, userPoolId string) *cognitoidentityprovider.AdminCreateUserInput

BuildCreateUserRequest generates a AdminCreateUserInput for Cognito

func (UserParams) BuildSuccessfulJsonResponse added in v1.8.0

func (p UserParams) BuildSuccessfulJsonResponse(ctx context.Context) ([]byte, error)

BuildSuccessfulJsonResponse builds the UserParams response json for client responses

func (UserParams) BuildUpdateUserRequest added in v1.13.0

func (p UserParams) BuildUpdateUserRequest(userPoolId string) *cognitoidentityprovider.AdminUpdateUserAttributesInput

BuildUpdateUserRequest generates a AdminUpdateUserAttributesInput for Cognito

func (UserParams) CheckForDuplicateEmail added in v1.8.0

func (p UserParams) CheckForDuplicateEmail(ctx context.Context, listUserResp *cognitoidentityprovider.ListUsersOutput) error

CheckForDuplicateEmail checks the Cognito response for users already using the email address, returning a validation error if found

func (*UserParams) GeneratePassword added in v1.8.0

func (p *UserParams) GeneratePassword(ctx context.Context) error

GeneratePassword creates a password for the user and assigns it to the struct

func (UserParams) MapCognitoDetails added in v1.11.0

func (p UserParams) MapCognitoDetails(userDetails *cognitoidentityprovider.UserType) UserParams

MapCognitoDetails maps the details from the Cognito User model to the UserParams model

func (*UserParams) MapCognitoGetResponse added in v1.12.0

func (p *UserParams) MapCognitoGetResponse(userDetails *cognitoidentityprovider.AdminGetUserOutput)

func (UserParams) ValidateRegistration added in v1.8.0

func (p UserParams) ValidateRegistration(ctx context.Context) []error

ValidateRegistration validates the required fields for user creation, returning validation errors for any failures

func (UserParams) ValidateUpdate added in v1.13.0

func (p UserParams) ValidateUpdate(ctx context.Context) []error

ValidateUpdate validates the required fields for user update, returning validation errors for any failures

type UserSignIn added in v1.8.0

type UserSignIn struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

func (*UserSignIn) BuildCognitoRequest added in v1.8.0

func (p *UserSignIn) BuildCognitoRequest(clientId string, clientSecret string, clientAuthFlow string) *cognitoidentityprovider.InitiateAuthInput

BuildCognitoRequest generates a InitiateAuthInput for Cognito

func (*UserSignIn) BuildSuccessfulJsonResponse added in v1.8.0

func (p *UserSignIn) BuildSuccessfulJsonResponse(ctx context.Context, result *cognitoidentityprovider.InitiateAuthOutput) ([]byte, error)

BuildSuccessfulJsonResponse builds the UserSignIn response json for client responses

func (*UserSignIn) ValidateCredentials added in v1.8.0

func (p *UserSignIn) ValidateCredentials(ctx context.Context) *[]error

ValidateCredentials validates the required fields have been submitted and meet the basic structure requirements

type UsersList added in v1.11.0

type UsersList struct {
	Users []UserParams `json:"users"`
	Count int          `json:"count"`
}

func (UsersList) BuildListUserRequest added in v1.11.0

func (p UsersList) BuildListUserRequest(filterString string, requiredAttribute string, limit int64, userPoolId *string) *cognitoidentityprovider.ListUsersInput

BuildListUserRequest generates a ListUsersInput object for Cognito

func (*UsersList) BuildSuccessfulJsonResponse added in v1.11.0

func (p *UsersList) BuildSuccessfulJsonResponse(ctx context.Context) ([]byte, error)

BuildSuccessfulJsonResponse builds the UsersList response json for client responses

func (*UsersList) MapCognitoUsers added in v1.11.0

func (p *UsersList) MapCognitoUsers(cognitoResults *cognitoidentityprovider.ListUsersOutput)

MapCognitoUsers maps the users from the cognito response into the UsersList Users attribute and sets the Count attribute

Jump to

Keyboard shortcuts

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