page

package
v0.971.0 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2024 License: MIT Imports: 27 Imported by: 0

Documentation

Overview

Package page contains the core code and business logic of Make and Register a Lasting Power of Attorney (MRLPA)

Useful links:

Modified from io/multi.go which carries the following licence:

Copyright 2009 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

Index

Constants

View Source
const FormUrlEncoded = "application/x-www-form-urlencoded"

Variables

View Source
var ErrCsrfInvalid = errors.New("CSRF token not valid")
View Source
var ErrTooManyWitnessCodeRequests = errors.New("too many witness code requests")
View Source
var Paths = AppPaths{}/* 113 elements not displayed */

Functions

func AuthRedirect

func AuthRedirect(logger Logger, store sesh.Store) http.HandlerFunc

func CacheControlHeaders

func CacheControlHeaders(h http.Handler) http.Handler

func CanGoTo added in v0.837.0

func CanGoTo(donor *actor.DonorProvidedDetails, url string) bool

func ChooseAttorneysState

func ChooseAttorneysState(attorneys actor.Attorneys, decisions actor.AttorneyDecisions) actor.TaskState

func ChooseReplacementAttorneysState

func ChooseReplacementAttorneysState(donor *actor.DonorProvidedDetails) actor.TaskState

func ContextWithAppData

func ContextWithAppData(ctx context.Context, appData AppData) context.Context

func ContextWithSessionData

func ContextWithSessionData(ctx context.Context, data *SessionData) context.Context

func CookieConsent

func CookieConsent(paths AppPaths) http.HandlerFunc

func DependencyHealthCheck

func DependencyHealthCheck(logger Logger, services map[string]HealthChecker) http.HandlerFunc

func MultiReadCloser

func MultiReadCloser(readClosers ...io.ReadCloser) io.ReadCloser

MultiReadCloser returns a io.ReadCloser that's the logical concatenation of the provided input readClosers. They're read sequentially. Once all inputs have returned EOF, Read will return EOF. If any of the readClosers return a non-nil, non-EOF error, Read will return that error.

func PostFormReferenceNumber

func PostFormReferenceNumber(r *http.Request, name string) string

func PostFormString

func PostFormString(r *http.Request, name string) string

func Recover

func Recover(tmpl template.Template, logger Logger, bundle Bundle, next http.Handler) http.HandlerFunc

func RouteToPrefix

func RouteToPrefix(prefix string, mux http.Handler, notFoundHandler Handler) http.HandlerFunc

func ValidateCsrf

func ValidateCsrf(next http.Handler, store sessions.Store, randomString func(int) string, errorHandler ErrorHandler) http.HandlerFunc

Types

type AppData

type AppData struct {
	Page             string
	Path             string
	Query            string
	Localizer        Localizer
	Lang             localize.Lang
	CookieConsentSet bool
	CanGoBack        bool
	SessionID        string
	RumConfig        RumConfig
	StaticHash       string
	Paths            AppPaths
	LpaID            string
	CsrfToken        string
	ActorTypes       actor.Types
	ActorType        actor.Type
	AttorneyID       string
	OneloginURL      string
	AppPublicURL     string
}

func AppDataFromContext

func AppDataFromContext(ctx context.Context) AppData

func (AppData) IsCertificateProvider

func (d AppData) IsCertificateProvider() bool

func (AppData) IsDonor

func (d AppData) IsDonor() bool

func (AppData) IsReplacementAttorney

func (d AppData) IsReplacementAttorney() bool

func (AppData) IsTrustCorporation

func (d AppData) IsTrustCorporation() bool

func (AppData) Redirect

func (d AppData) Redirect(w http.ResponseWriter, r *http.Request, url string) error

type AppPaths

type AppPaths struct {
	Attorney            AttorneyPaths
	CertificateProvider CertificateProviderPaths
	Supporter           SupporterPaths
	HealthCheck         HealthCheckPaths

	AttorneyFixtures                   Path
	AuthRedirect                       Path
	CertificateProviderFixtures        Path
	CertificateProviderStart           Path
	CookiesConsent                     Path
	Dashboard                          Path
	DashboardFixtures                  Path
	DonorSubByLpaUID                   Path
	Fixtures                           Path
	Login                              Path
	LoginCallback                      Path
	LpaDeleted                         Path
	LpaWithdrawn                       Path
	Root                               Path
	SignOut                            Path
	Start                              Path
	SupporterFixtures                  Path
	YourLegalRightsAndResponsibilities Path

	AboutPayment                                         LpaPath
	AreYouApplyingForFeeDiscountOrExemption              LpaPath
	CertificateProviderAddress                           LpaPath
	CertificateProviderDetails                           LpaPath
	CertificateProviderOptOut                            LpaPath
	ChangeCertificateProviderMobileNumber                LpaPath
	ChangeIndependentWitnessMobileNumber                 LpaPath
	CheckYouCanSign                                      LpaPath
	CheckYourLpa                                         LpaPath
	ChooseAttorneys                                      LpaPath
	ChooseAttorneysAddress                               LpaPath
	ChooseAttorneysGuidance                              LpaPath
	ChooseAttorneysSummary                               LpaPath
	ChooseNewCertificateProvider                         LpaPath
	ChoosePeopleToNotify                                 LpaPath
	ChoosePeopleToNotifyAddress                          LpaPath
	ChoosePeopleToNotifySummary                          LpaPath
	ChooseReplacementAttorneys                           LpaPath
	ChooseReplacementAttorneysAddress                    LpaPath
	ChooseReplacementAttorneysSummary                    LpaPath
	ChooseYourCertificateProvider                        LpaPath
	ConfirmYourCertificateProviderIsNotRelated           LpaPath
	DeleteThisLpa                                        LpaPath
	DoYouWantReplacementAttorneys                        LpaPath
	DoYouWantToNotifyPeople                              LpaPath
	EnterReplacementTrustCorporation                     LpaPath
	EnterReplacementTrustCorporationAddress              LpaPath
	EnterTrustCorporation                                LpaPath
	EnterTrustCorporationAddress                         LpaPath
	EvidenceRequired                                     LpaPath
	EvidenceSuccessfullyUploaded                         LpaPath
	FeeDenied                                            LpaPath
	GettingHelpSigning                                   LpaPath
	HowDoYouKnowYourCertificateProvider                  LpaPath
	HowLongHaveYouKnownCertificateProvider               LpaPath
	HowShouldAttorneysMakeDecisions                      LpaPath
	HowShouldReplacementAttorneysMakeDecisions           LpaPath
	HowShouldReplacementAttorneysStepIn                  LpaPath
	HowToConfirmYourIdentityAndSign                      LpaPath
	HowToSendEvidence                                    LpaPath
	HowWouldCertificateProviderPreferToCarryOutTheirRole LpaPath
	HowWouldYouLikeToSendEvidence                        LpaPath
	IdentityConfirmed                                    LpaPath
	IdentityWithOneLogin                                 LpaPath
	IdentityWithOneLoginCallback                         LpaPath
	LifeSustainingTreatment                              LpaPath
	LpaDetailsSaved                                      LpaPath
	LpaType                                              LpaPath
	LpaYourLegalRightsAndResponsibilities                LpaPath
	MakeANewLPA                                          LpaPath
	NeedHelpSigningConfirmation                          LpaPath
	PaymentConfirmation                                  LpaPath
	PreviousApplicationNumber                            LpaPath
	PreviousFee                                          LpaPath
	Progress                                             LpaPath
	ProveYourIdentity                                    LpaPath
	ReadYourLpa                                          LpaPath
	RemoveAttorney                                       LpaPath
	RemovePersonToNotify                                 LpaPath
	RemoveReplacementAttorney                            LpaPath
	RemoveReplacementTrustCorporation                    LpaPath
	RemoveTrustCorporation                               LpaPath
	ResendCertificateProviderCode                        LpaPath
	ResendIndependentWitnessCode                         LpaPath
	Restrictions                                         LpaPath
	SendUsYourEvidenceByPost                             LpaPath
	SignTheLpaOnBehalf                                   LpaPath
	SignYourLpa                                          LpaPath
	TaskList                                             LpaPath
	UploadEvidence                                       LpaPath
	UploadEvidenceSSE                                    LpaPath
	UseExistingAddress                                   LpaPath
	WeHaveUpdatedYourDetails                             LpaPath
	WhatACertificateProviderDoes                         LpaPath
	WhatHappensNextPostEvidence                          LpaPath
	WhenCanTheLpaBeUsed                                  LpaPath
	WhichFeeTypeAreYouApplyingFor                        LpaPath
	WithdrawThisLpa                                      LpaPath
	WitnessingAsCertificateProvider                      LpaPath
	WitnessingAsIndependentWitness                       LpaPath
	WitnessingYourSignature                              LpaPath
	YouHaveSubmittedYourLpa                              LpaPath
	YouCannotSignYourLpaYet                              LpaPath
	YourAddress                                          LpaPath
	YourAuthorisedSignatory                              LpaPath
	YourDetails                                          LpaPath
	YourDateOfBirth                                      LpaPath
	YourIndependentWitness                               LpaPath
	YourIndependentWitnessAddress                        LpaPath
	YourIndependentWitnessMobile                         LpaPath
	YourName                                             LpaPath
	YourPreferredLanguage                                LpaPath
}

type AttorneyPath

type AttorneyPath string

func (AttorneyPath) Format

func (p AttorneyPath) Format(id string) string

func (AttorneyPath) Redirect added in v0.833.0

func (p AttorneyPath) Redirect(w http.ResponseWriter, r *http.Request, appData AppData, lpaID string) error

func (AttorneyPath) RedirectQuery added in v0.833.0

func (p AttorneyPath) RedirectQuery(w http.ResponseWriter, r *http.Request, appData AppData, lpaID string, query url.Values) error

func (AttorneyPath) String

func (p AttorneyPath) String() string

type AttorneyPaths

type AttorneyPaths struct {
	EnterReferenceNumber Path
	Login                Path
	LoginCallback        Path
	Start                Path

	CodeOfConduct             AttorneyPath
	ConfirmYourDetails        AttorneyPath
	MobileNumber              AttorneyPath
	Progress                  AttorneyPath
	ReadTheLpa                AttorneyPath
	RightsAndResponsibilities AttorneyPath
	Sign                      AttorneyPath
	TaskList                  AttorneyPath
	WhatHappensNext           AttorneyPath
	WhatHappensWhenYouSign    AttorneyPath
	WouldLikeSecondSignatory  AttorneyPath
	YourPreferredLanguage     AttorneyPath
}

type Bundle

type Bundle interface {
	For(lang localize.Lang) *localize.Localizer
}

type CertificateProviderPath

type CertificateProviderPath string

func (CertificateProviderPath) Format

func (p CertificateProviderPath) Format(id string) string

func (CertificateProviderPath) Redirect added in v0.833.0

func (p CertificateProviderPath) Redirect(w http.ResponseWriter, r *http.Request, appData AppData, lpaID string) error

func (CertificateProviderPath) String

func (p CertificateProviderPath) String() string

type CertificateProviderPaths

type CertificateProviderPaths struct {
	Login                Path
	LoginCallback        Path
	EnterReferenceNumber Path

	CertificateProvided          CertificateProviderPath
	ConfirmYourDetails           CertificateProviderPath
	EnterDateOfBirth             CertificateProviderPath
	IdentityWithOneLogin         CertificateProviderPath
	IdentityWithOneLoginCallback CertificateProviderPath
	ProveYourIdentity            CertificateProviderPath
	ProvideCertificate           CertificateProviderPath
	ReadTheLpa                   CertificateProviderPath
	TaskList                     CertificateProviderPath
	WhatHappensNext              CertificateProviderPath
	WhatIsYourHomeAddress        CertificateProviderPath
	WhoIsEligible                CertificateProviderPath
	YourPreferredLanguage        CertificateProviderPath
	YourRole                     CertificateProviderPath
}

type DashboardStore

type DashboardStore interface {
	GetAll(ctx context.Context) (donor, attorney, certificateProvider []LpaAndActorTasks, err error)
	SubExistsForActorType(ctx context.Context, sub string, actorType actor.Type) (bool, error)
}

type Document added in v0.775.0

type Document struct {
	PK, SK        string
	Filename      string
	VirusDetected bool
	Scanned       bool
	Key           string
	Uploaded      time.Time
	Sent          time.Time
}

type Documents added in v0.794.0

type Documents []Document

func (*Documents) Delete added in v0.794.0

func (ds *Documents) Delete(documentKey string) bool

func (*Documents) Filenames added in v0.794.0

func (ds *Documents) Filenames() []string

func (*Documents) Get added in v0.794.0

func (ds *Documents) Get(documentKey string) Document

func (*Documents) InfectedFilenames added in v0.794.0

func (ds *Documents) InfectedFilenames() []string

func (*Documents) Keys added in v0.794.0

func (ds *Documents) Keys() []string

func (*Documents) NotScanned added in v0.794.0

func (ds *Documents) NotScanned() Documents

func (*Documents) Put added in v0.794.0

func (ds *Documents) Put(scannedDocument Document)

func (*Documents) Scanned added in v0.794.0

func (ds *Documents) Scanned() Documents

func (*Documents) ScannedNotSent added in v0.923.0

func (ds *Documents) ScannedNotSent() Documents

func (*Documents) Sent added in v0.923.0

func (ds *Documents) Sent() Documents

type DonorStore

type DonorStore interface {
	Create(context.Context) (*actor.DonorProvidedDetails, error)
	Put(context.Context, *actor.DonorProvidedDetails) error
}

type ErrorHandler

type ErrorHandler func(http.ResponseWriter, *http.Request, error)

func Error

func Error(tmpl template.Template, logger Logger) ErrorHandler

type EventClient added in v0.962.0

type EventClient interface {
	SendNotificationSent(context.Context, event.NotificationSent) error
}

type HandleOpt added in v0.863.0

type HandleOpt byte
const (
	None HandleOpt = 1 << iota
	RequireSession
	CanGoBack
)

type Handler

type Handler func(data AppData, w http.ResponseWriter, r *http.Request) error

func Dashboard

func Dashboard(tmpl template.Template, donorStore DonorStore, dashboardStore DashboardStore) Handler

func Guidance

func Guidance(tmpl template.Template) Handler

func Login

func Login(oneLoginClient LoginOneLoginClient, store sesh.Store, randomString func(int) string, redirect Path) Handler

func LoginCallback

func LoginCallback(oneLoginClient LoginCallbackOneLoginClient, sessionStore sesh.Store, redirect Path, dashboardStore DashboardStore, actorType actor.Type) Handler

func Root

func Root(tmpl template.Template, logger Logger) Handler

func SignOut

func SignOut(logger Logger, sessionStore sesh.Store, oneLoginClient OneLoginClient, appPublicURL string) Handler

type HealthCheckPaths

type HealthCheckPaths struct {
	Service    Path
	Dependency Path
}

type HealthChecker added in v0.805.0

type HealthChecker interface {
	CheckHealth(context.Context) error
}

type Localizer

type Localizer interface {
	Concat([]string, string) string
	Count(string, int) string
	Format(string, map[string]any) string
	FormatCount(string, int, map[string]interface{}) string
	FormatDate(date.TimeOrDate) string
	FormatDateTime(time.Time) string
	Possessive(string) string
	SetShowTranslationKeys(bool)
	ShowTranslationKeys() bool
	T(string) string
}

type Logger

type Logger interface {
	Print(v ...interface{})
	Request(*http.Request, error)
}

type LoginCallbackOneLoginClient

type LoginCallbackOneLoginClient interface {
	Exchange(ctx context.Context, code, nonce string) (idToken, accessToken string, err error)
	UserInfo(ctx context.Context, accessToken string) (onelogin.UserInfo, error)
}

type LoginOneLoginClient

type LoginOneLoginClient interface {
	AuthCodeURL(state, nonce, locale string, identity bool) (string, error)
}

type LpaAndActorTasks

type LpaAndActorTasks struct {
	Donor               *actor.DonorProvidedDetails
	CertificateProvider *actor.CertificateProviderProvidedDetails
	Attorney            *actor.AttorneyProvidedDetails
}

type LpaPath

type LpaPath string

func (LpaPath) Format

func (p LpaPath) Format(id string) string

func (LpaPath) Redirect added in v0.833.0

func (p LpaPath) Redirect(w http.ResponseWriter, r *http.Request, appData AppData, donor *actor.DonorProvidedDetails) error

func (LpaPath) RedirectQuery added in v0.833.0

func (p LpaPath) RedirectQuery(w http.ResponseWriter, r *http.Request, appData AppData, donor *actor.DonorProvidedDetails, query url.Values) error

func (LpaPath) String

func (p LpaPath) String() string

type NotifyClient

type NotifyClient interface {
	SendEmail(context.Context, string, notify.Email) (string, error)
	SendSMS(context.Context, string, notify.SMS) (string, error)
}

type OneLoginClient

type OneLoginClient interface {
	AuthCodeURL(state, nonce, locale string, identity bool) (string, error)
	EndSessionURL(idToken, postLogoutURL string) (string, error)
	Exchange(ctx context.Context, code, nonce string) (idToken, accessToken string, err error)
	UserInfo(ctx context.Context, accessToken string) (onelogin.UserInfo, error)
}

type Path

type Path string

func (Path) Format

func (p Path) Format() string

func (Path) Redirect added in v0.833.0

func (p Path) Redirect(w http.ResponseWriter, r *http.Request, appData AppData) error

func (Path) RedirectQuery added in v0.833.0

func (p Path) RedirectQuery(w http.ResponseWriter, r *http.Request, appData AppData, query url.Values) error

func (Path) String

func (p Path) String() string

type RumConfig

type RumConfig struct {
	GuestRoleArn      string
	Endpoint          string
	ApplicationRegion string
	IdentityPoolID    string
	ApplicationID     string
}

type SessionData

type SessionData struct {
	SessionID string
	LpaID     string
}

func SessionDataFromContext

func SessionDataFromContext(ctx context.Context) (*SessionData, error)

type SessionMissingError

type SessionMissingError struct{}

func (SessionMissingError) Error

func (s SessionMissingError) Error() string

type SessionStore

type SessionStore interface {
	Get(r *http.Request, name string) (*sessions.Session, error)
	New(r *http.Request, name string) (*sessions.Session, error)
	Save(r *http.Request, w http.ResponseWriter, s *sessions.Session) error
}

type ShareCodeSender

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

func NewShareCodeSender

func NewShareCodeSender(shareCodeStore ShareCodeStore, notifyClient NotifyClient, appPublicURL string, randomString func(int) string, eventClient EventClient) *ShareCodeSender

func (*ShareCodeSender) SendAttorneys

func (s *ShareCodeSender) SendAttorneys(ctx context.Context, appData AppData, donor *actor.DonorProvidedDetails) error

func (*ShareCodeSender) SendCertificateProviderInvite added in v0.885.0

func (s *ShareCodeSender) SendCertificateProviderInvite(ctx context.Context, appData AppData, donor *actor.DonorProvidedDetails) error

func (*ShareCodeSender) SendCertificateProviderPrompt added in v0.885.0

func (s *ShareCodeSender) SendCertificateProviderPrompt(ctx context.Context, appData AppData, donor *actor.DonorProvidedDetails) error

func (*ShareCodeSender) UseTestCode

func (s *ShareCodeSender) UseTestCode()

type ShareCodeStore

type ShareCodeStore interface {
	Get(ctx context.Context, actorType actor.Type, shareCode string) (actor.ShareCodeData, error)
	Put(ctx context.Context, actorType actor.Type, shareCode string, data actor.ShareCodeData) error
}

type SupporterPath added in v0.942.0

type SupporterPath string

func (SupporterPath) Format added in v0.942.0

func (p SupporterPath) Format() string

func (SupporterPath) Redirect added in v0.942.0

func (p SupporterPath) Redirect(w http.ResponseWriter, r *http.Request, appData AppData) error

func (SupporterPath) String added in v0.942.0

func (p SupporterPath) String() string

type SupporterPaths added in v0.942.0

type SupporterPaths struct {
	Start         Path
	Login         Path
	LoginCallback Path

	EnterOrganisationName SupporterPath
	OrganisationCreated   SupporterPath
	Dashboard             SupporterPath
	InviteMember          SupporterPath
}

type Template

type Template func(io.Writer, interface{}) error

type WitnessCodeSender

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

func NewWitnessCodeSender

func NewWitnessCodeSender(donorStore DonorStore, notifyClient NotifyClient) *WitnessCodeSender

func (*WitnessCodeSender) SendToCertificateProvider added in v0.691.0

func (s *WitnessCodeSender) SendToCertificateProvider(ctx context.Context, donor *actor.DonorProvidedDetails, localizer Localizer) error

func (*WitnessCodeSender) SendToIndependentWitness added in v0.691.0

func (s *WitnessCodeSender) SendToIndependentWitness(ctx context.Context, donor *actor.DonorProvidedDetails, localizer Localizer) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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