page

package
v0.1342.0-moredonorstu... Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2024 License: MIT Imports: 35 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 (
	UseTestWitnessCode            = false
	ErrTooManyWitnessCodeRequests = errors.New("too many witness code requests")
)
View Source
var ErrCsrfInvalid = errors.New("CSRF token not valid")
View Source
var Paths = AppPaths{}/* 133 elements not displayed */

Functions

func AttorneyCanGoTo added in v0.1243.0

func AttorneyCanGoTo(attorney *attorneydata.Provided, url string) bool

func AuthRedirect

func AuthRedirect(logger Logger, sessionStore SessionStore) http.HandlerFunc

func CacheControlHeaders

func CacheControlHeaders(h http.Handler) http.Handler

func CertificateProviderCanGoTo added in v0.1243.0

func CertificateProviderCanGoTo(certificateProvider *certificateproviderdata.Provided, url string) bool

func ChooseAttorneysState

func ChooseAttorneysState(attorneys donordata.Attorneys, decisions donordata.AttorneyDecisions) task.State

func ChooseReplacementAttorneysState

func ChooseReplacementAttorneysState(donor *donordata.Provided) task.State

func CookieConsent

func CookieConsent(paths AppPaths) http.HandlerFunc

func DependencyHealthCheck

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

func DonorCanGoTo added in v0.1243.0

func DonorCanGoTo(donor *donordata.Provided, url string) bool

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 ValidateCsrf

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

Types

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
	EnterAccessCode             Path
	Fixtures                    Path
	Login                       Path
	LoginCallback               Path
	LpaDeleted                  Path
	LpaWithdrawn                Path
	Root                        Path
	SignOut                     Path
	Start                       Path
	SupporterFixtures           Path

	AboutPayment                                         LpaPath
	AddCorrespondent                                     LpaPath
	AreYouApplyingForFeeDiscountOrExemption              LpaPath
	BecauseYouHaveChosenJointly                          LpaPath
	BecauseYouHaveChosenJointlyForSomeSeverallyForOthers LpaPath
	CanYouSignYourLpa                                    LpaPath
	CertificateProviderAddress                           LpaPath
	CertificateProviderDetails                           LpaPath
	CertificateProviderOptOut                            LpaPath
	ChangeCertificateProviderMobileNumber                LpaPath
	ChangeIndependentWitnessMobileNumber                 LpaPath
	CheckYouCanSign                                      LpaPath
	CheckYourDetails                                     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
	ConfirmPersonAllowedToVouch                          LpaPath
	ConfirmYourCertificateProviderIsNotRelated           LpaPath
	DeleteThisLpa                                        LpaPath
	DoYouWantReplacementAttorneys                        LpaPath
	DoYouWantToNotifyPeople                              LpaPath
	EnterCorrespondentAddress                            LpaPath
	EnterCorrespondentDetails                            LpaPath
	EnterReplacementTrustCorporation                     LpaPath
	EnterReplacementTrustCorporationAddress              LpaPath
	EnterTrustCorporation                                LpaPath
	EnterTrustCorporationAddress                         LpaPath
	EnterVoucher                                         LpaPath
	EvidenceRequired                                     LpaPath
	EvidenceSuccessfullyUploaded                         LpaPath
	FeeApproved                                          LpaPath
	FeeDenied                                            LpaPath
	GettingHelpSigning                                   LpaPath
	HowDoYouKnowYourCertificateProvider                  LpaPath
	HowLongHaveYouKnownCertificateProvider               LpaPath
	HowShouldAttorneysMakeDecisions                      LpaPath
	HowShouldReplacementAttorneysMakeDecisions           LpaPath
	HowShouldReplacementAttorneysStepIn                  LpaPath
	HowToConfirmYourIdentityAndSign                      LpaPath
	HowToSendEvidence                                    LpaPath
	HowWouldCertificateProviderPreferToCarryOutTheirRole LpaPath
	HowWouldYouLikeToSendEvidence                        LpaPath
	IdentityWithOneLogin                                 LpaPath
	IdentityWithOneLoginCallback                         LpaPath
	LifeSustainingTreatment                              LpaPath
	LpaDetailsSaved                                      LpaPath
	LpaType                                              LpaPath
	LpaYourLegalRightsAndResponsibilities                LpaPath
	MakeANewLPA                                          LpaPath
	NeedHelpSigningConfirmation                          LpaPath
	OneLoginIdentityDetails                              LpaPath
	PaymentConfirmation                                  LpaPath
	PreviousApplicationNumber                            LpaPath
	PreviousFee                                          LpaPath
	Progress                                             LpaPath
	ProveYourIdentity                                    LpaPath
	ReadYourLpa                                          LpaPath
	RegisterWithCourtOfProtection                        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
	UnableToConfirmIdentity                              LpaPath
	UploadEvidence                                       LpaPath
	UploadEvidenceSSE                                    LpaPath
	UseExistingAddress                                   LpaPath
	WeHaveContactedVoucher                               LpaPath
	WeHaveReceivedVoucherDetails                         LpaPath
	WeHaveUpdatedYourDetails                             LpaPath
	WhatACertificateProviderDoes                         LpaPath
	WhatHappensNextPostEvidence                          LpaPath
	WhatHappensNextRegisteringWithCourtOfProtection      LpaPath
	WhatIsVouching                                       LpaPath
	WhatYouCanDoNow                                      LpaPath
	WhenCanTheLpaBeUsed                                  LpaPath
	WhichFeeTypeAreYouApplyingFor                        LpaPath
	WithdrawThisLpa                                      LpaPath
	WitnessingAsCertificateProvider                      LpaPath
	WitnessingAsIndependentWitness                       LpaPath
	WitnessingYourSignature                              LpaPath
	YouCannotSignYourLpaYet                              LpaPath
	YouHaveSubmittedYourLpa                              LpaPath
	YourAddress                                          LpaPath
	YourAuthorisedSignatory                              LpaPath
	YourDateOfBirth                                      LpaPath
	YourDetails                                          LpaPath
	YourEmail                                            LpaPath
	YourIndependentWitness                               LpaPath
	YourIndependentWitnessAddress                        LpaPath
	YourIndependentWitnessMobile                         LpaPath
	YourLegalRightsAndResponsibilitiesIfYouMakeLpa       LpaPath
	YourLpaLanguage                                      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 appcontext.Data, lpaID string) error

func (AttorneyPath) RedirectQuery added in v0.833.0

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

func (AttorneyPath) String

func (p AttorneyPath) String() string

type AttorneyPaths

type AttorneyPaths struct {
	ConfirmDontWantToBeAttorneyLoggedOut Path
	EnterReferenceNumber                 Path
	EnterReferenceNumberOptOut           Path
	Login                                Path
	LoginCallback                        Path
	Start                                Path
	YouHaveDecidedNotToBeAttorney        Path

	CodeOfConduct               AttorneyPath
	ConfirmDontWantToBeAttorney 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 CertificateProviderInvite added in v0.1116.0

type CertificateProviderInvite struct {
	LpaKey                      dynamo.LpaKeyType
	LpaOwnerKey                 dynamo.LpaOwnerKeyType
	LpaUID                      string
	Type                        lpadata.LpaType
	DonorFirstNames             string
	DonorFullName               string
	CertificateProviderUID      actoruid.UID
	CertificateProviderFullName string
	CertificateProviderEmail    string
}

type CertificateProviderPath

type CertificateProviderPath string

func (CertificateProviderPath) Format

func (p CertificateProviderPath) Format(id string) string

func (CertificateProviderPath) Redirect added in v0.833.0

func (CertificateProviderPath) String

func (p CertificateProviderPath) String() string

type CertificateProviderPaths

type CertificateProviderPaths struct {
	Login                                           Path
	LoginCallback                                   Path
	EnterReferenceNumber                            Path
	EnterReferenceNumberOptOut                      Path
	ConfirmDontWantToBeCertificateProviderLoggedOut Path
	YouHaveDecidedNotToBeCertificateProvider        Path

	CertificateProvided                    CertificateProviderPath
	ConfirmDontWantToBeCertificateProvider CertificateProviderPath
	ConfirmYourDetails                     CertificateProviderPath
	EnterDateOfBirth                       CertificateProviderPath
	IdentityWithOneLogin                   CertificateProviderPath
	IdentityWithOneLoginCallback           CertificateProviderPath
	OneLoginIdentityDetails                CertificateProviderPath
	ProveYourIdentity                      CertificateProviderPath
	ProvideCertificate                     CertificateProviderPath
	ReadTheLpa                             CertificateProviderPath
	TaskList                               CertificateProviderPath
	UnableToConfirmIdentity                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 DonorStore

type DonorStore interface {
	Create(context.Context) (*donordata.Provided, error)
	Put(context.Context, *donordata.Provided) error
}

type ErrorHandler

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

func Error

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

type EventClient added in v0.962.0

type EventClient interface {
	SendNotificationSent(ctx context.Context, notificationSentEvent event.NotificationSent) error
	SendPaperFormRequested(ctx context.Context, paperFormRequestedEvent event.PaperFormRequested) error
}

type HandleOpt added in v0.863.0

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

type Handler

type Handler func(data appcontext.Data, 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, sessionStore LoginSessionStore, randomString func(int) string, redirect Path) Handler

func LoginCallback

func LoginCallback(logger Logger, oneLoginClient LoginCallbackOneLoginClient, sessionStore LoginCallbackSessionStore, 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 SessionStore, 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(list []string, joiner string) string
	Count(messageID string, count int) string
	Format(messageID string, data map[string]interface{}) string
	FormatCount(messageID string, count int, data map[string]any) string
	FormatDate(t date.TimeOrDate) string
	FormatTime(t time.Time) string
	FormatDateTime(t time.Time) string
	Possessive(s string) string
	SetShowTranslationKeys(s bool)
	ShowTranslationKeys() bool
	T(messageID string) string
}

type Logger

type Logger interface {
	InfoContext(ctx context.Context, msg string, args ...any)
	ErrorContext(ctx context.Context, msg string, args ...any)
}

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 LoginCallbackSessionStore added in v0.1051.0

type LoginCallbackSessionStore interface {
	OneLogin(r *http.Request) (*sesh.OneLoginSession, error)
	SetLogin(r *http.Request, w http.ResponseWriter, session *sesh.LoginSession) error
}

type LoginOneLoginClient

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

type LoginSessionStore added in v0.1051.0

type LoginSessionStore interface {
	SetOneLogin(r *http.Request, w http.ResponseWriter, session *sesh.OneLoginSession) error
}

type LpaAndActorTasks

type LpaAndActorTasks struct {
	Lpa                 *lpastore.Lpa
	CertificateProvider *certificateproviderdata.Provided
	Attorney            *attorneydata.Provided
}

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 appcontext.Data, donor *donordata.Provided) error

func (LpaPath) RedirectQuery added in v0.833.0

func (p LpaPath) RedirectQuery(w http.ResponseWriter, r *http.Request, appData appcontext.Data, donor *donordata.Provided, query url.Values) error

func (LpaPath) String

func (p LpaPath) String() string

type NotifyClient

type NotifyClient interface {
	SendActorEmail(context context.Context, to, lpaUID string, email notify.Email) error
	SendActorSMS(context context.Context, to, lpaUID string, sms notify.SMS) 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 appcontext.Data) error

func (Path) RedirectQuery added in v0.833.0

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

func (Path) String

func (p Path) String() string

type Progress

type Progress struct {
	Paid                      ProgressTask
	ConfirmedID               ProgressTask
	DonorSigned               ProgressTask
	CertificateProviderSigned ProgressTask
	AttorneysSigned           ProgressTask
	LpaSubmitted              ProgressTask
	NoticesOfIntentSent       ProgressTask
	StatutoryWaitingPeriod    ProgressTask
	LpaRegistered             ProgressTask
	// contains filtered or unexported fields
}

func (Progress) ToSlice added in v0.1158.0

func (p Progress) ToSlice() []ProgressTask

type ProgressTask added in v0.1090.0

type ProgressTask struct {
	State task.State
	Label string
}

type ProgressTracker added in v0.1090.0

type ProgressTracker struct {
	Localizer Localizer
}

func (ProgressTracker) Progress added in v0.1090.0

func (pt ProgressTracker) Progress(lpa *lpastore.Lpa) Progress

type SessionStore

type SessionStore interface {
	Csrf(r *http.Request) (*sesh.CsrfSession, error)
	SetCsrf(r *http.Request, w http.ResponseWriter, session *sesh.CsrfSession) error
	Login(r *http.Request) (*sesh.LoginSession, error)
	SetLogin(r *http.Request, w http.ResponseWriter, session *sesh.LoginSession) error
	ClearLogin(r *http.Request, w http.ResponseWriter) error
	OneLogin(r *http.Request) (*sesh.OneLoginSession, error)
	SetOneLogin(r *http.Request, w http.ResponseWriter, session *sesh.OneLoginSession) 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 appcontext.Data, donor *lpastore.Lpa) error

func (*ShareCodeSender) SendCertificateProviderInvite added in v0.885.0

func (s *ShareCodeSender) SendCertificateProviderInvite(ctx context.Context, appData appcontext.Data, invite CertificateProviderInvite) error

func (*ShareCodeSender) SendCertificateProviderPrompt added in v0.885.0

func (s *ShareCodeSender) SendCertificateProviderPrompt(ctx context.Context, appData appcontext.Data, donor *donordata.Provided) error

func (*ShareCodeSender) UseTestCode

func (s *ShareCodeSender) UseTestCode(shareCode string)

type ShareCodeStore

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

type SupporterLpaPath added in v0.1079.0

type SupporterLpaPath string

func (SupporterLpaPath) Format added in v0.1079.0

func (p SupporterLpaPath) Format(lpaID string) string

func (SupporterLpaPath) IsManageOrganisation added in v0.1079.0

func (p SupporterLpaPath) IsManageOrganisation() bool

func (SupporterLpaPath) Redirect added in v0.1079.0

func (p SupporterLpaPath) Redirect(w http.ResponseWriter, r *http.Request, appData appcontext.Data, lpaID string) error

func (SupporterLpaPath) RedirectQuery added in v0.1100.0

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

func (SupporterLpaPath) String added in v0.1079.0

func (p SupporterLpaPath) String() string

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) IsManageOrganisation added in v0.994.0

func (p SupporterPath) IsManageOrganisation() bool

func (SupporterPath) Redirect added in v0.942.0

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

func (SupporterPath) RedirectQuery added in v0.982.0

func (p SupporterPath) RedirectQuery(w http.ResponseWriter, r *http.Request, appData appcontext.Data, query url.Values) error

func (SupporterPath) String added in v0.942.0

func (p SupporterPath) String() string

type SupporterPaths added in v0.942.0

type SupporterPaths struct {
	EnterOrganisationName Path
	EnterReferenceNumber  Path
	EnterYourName         Path
	InviteExpired         Path
	Login                 Path
	LoginCallback         Path
	OrganisationDeleted   Path
	SigningInAdvice       Path
	Start                 Path

	ConfirmDonorCanInteractOnline SupporterPath
	ContactOPGForPaperForms       SupporterPath
	Dashboard                     SupporterPath
	DeleteOrganisation            SupporterPath
	EditMember                    SupporterPath
	EditOrganisationName          SupporterPath
	InviteMember                  SupporterPath
	InviteMemberConfirmation      SupporterPath
	ManageTeamMembers             SupporterPath
	OrganisationCreated           SupporterPath
	OrganisationDetails           SupporterPath

	ViewLPA     SupporterLpaPath
	DonorAccess SupporterLpaPath
}

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 *donordata.Provided, localizer Localizer) error

func (*WitnessCodeSender) SendToIndependentWitness added in v0.691.0

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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