controller

package
v0.0.0-...-53e80a7 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2024 License: AGPL-3.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateAssociateJobSeekerProfileUpdateRequest

func ValidateAssociateJobSeekerProfileUpdateRequest(dirtyData *ProfileUpdateRequestIDO) error

func ValidateAssociateProfileUpdateRequest

func ValidateAssociateProfileUpdateRequest(dirtyData *ProfileUpdateRequestIDO) error

func ValidateCustomerProfileUpdateRequest

func ValidateCustomerProfileUpdateRequest(dirtyData *ProfileUpdateRequestIDO) error

func ValidateExecutiveStaffProfileUpdateRequest

func ValidateExecutiveStaffProfileUpdateRequest(dirtyData *ProfileUpdateRequestIDO) error

func ValidateProfileChangePassworRequest

func ValidateProfileChangePassworRequest(dirtyData *ProfileChangePasswordRequestIDO) error

func ValidateStaffProfileUpdateRequest

func ValidateStaffProfileUpdateRequest(dirtyData *ProfileUpdateRequestIDO) error

Types

type ChangePasswordRequestIDO

type ChangePasswordRequestIDO struct {
	NewPassword         string `json:"new_password"`
	NewPasswordRepeated string `json:"new_password_repeated"`
	OldPassword         string `json:"old_password"`
}

type DashboardResponseIDO

type DashboardResponseIDO struct {
	ClientsCount    int64 `json:"clients_count"`
	AssociatesCount int64 `json:"associates_count"`
	JobsCount       int64 `json:"jobs_count"`
	TasksCount      int64 `json:"tasks_count"`
}

type ExecutiveVisitsTenantRequest

type ExecutiveVisitsTenantRequest struct {
	TenantID primitive.ObjectID `json:"tenant_id,omitempty"`
}

type GatewayController

type GatewayController interface {
	Login(ctx context.Context, email, password string) (*gateway_s.LoginResponseIDO, error)
	GetUserBySessionID(ctx context.Context, sessionID string) (*user_s.User, error)
	RefreshToken(ctx context.Context, value string) (*user_s.User, string, time.Time, string, time.Time, error)
	Logout(ctx context.Context) error
	ForgotPassword(ctx context.Context, email string) error
	PasswordReset(ctx context.Context, req *PasswordResetRequestIDO) error
	ChangePassword(ctx context.Context, req *ChangePasswordRequestIDO) error
	Profile(ctx context.Context) (*ProfileResponse, error)
	ProfileUpdate(ctx context.Context, req *ProfileUpdateRequestIDO) error
	ProfileChangePassword(ctx context.Context, req *ProfileChangePasswordRequestIDO) error
	ExecutiveVisitsTenant(ctx context.Context, req *ExecutiveVisitsTenantRequest) error
	Dashboard(ctx context.Context) (*DashboardResponseIDO, error)
	GenerateOTP(ctx context.Context) (*OTPGenerateResponseIDO, error)
	GenerateOTPAndQRCodePNGImage(ctx context.Context) ([]byte, error)
	VerifyOTP(ctx context.Context, req *VerificationTokenRequestIDO) (*VerificationTokenResponseIDO, error)
	ValidateOTP(ctx context.Context, req *ValidateTokenRequestIDO) (*ValidateTokenResponseIDO, error)
	DisableOTP(ctx context.Context) (*u_d.User, error)
	RecoveryOTP(ctx context.Context, req *RecoveryRequestIDO) (*gateway_s.LoginResponseIDO, error)
}

func NewController

func NewController(
	appCfg *config.Conf,
	loggerp *slog.Logger,
	uuidp uuid.Provider,
	jwtp jwt.Provider,
	passwordp password.Provider,
	kmux kmutex.Provider,
	cache mongodbcache.Cacher,
	tq stepper.Stepper,
	te templatedemailer.TemplatedEmailer,
	client *mongo.Client,
	usr_storer user_s.UserStorer,
	a_storer a_s.AssociateStorer,
	c_storer c_s.CustomerStorer,
	s_storer s_s.StaffStorer,
	org_storer tenant_s.TenantStorer,
	howhear_s howhear_s.HowHearAboutUsItemStorer,
) GatewayController

type GatewayControllerImpl

type GatewayControllerImpl struct {
	Config           *config.Conf
	Logger           *slog.Logger
	UUID             uuid.Provider
	JWT              jwt.Provider
	Password         password.Provider
	Kmutex           kmutex.Provider
	DbClient         *mongo.Client
	Cache            mongodbcache.Cacher
	TaskQueue        stepper.Stepper
	TemplatedEmailer templatedemailer.TemplatedEmailer
	UserStorer       user_s.UserStorer
	AssociateStorer  a_s.AssociateStorer
	CustomerStorer   c_s.CustomerStorer
	StaffStorer      s_s.StaffStorer
	TenantStorer     tenant_s.TenantStorer
	HowHearStorer    howhear_s.HowHearAboutUsItemStorer
}

func (*GatewayControllerImpl) ChangePassword

func (impl *GatewayControllerImpl) ChangePassword(ctx context.Context, req *ChangePasswordRequestIDO) error

ChangePassword function will change the password of the current user in the session.

func (*GatewayControllerImpl) Dashboard

func (*GatewayControllerImpl) DisableOTP

func (impl *GatewayControllerImpl) DisableOTP(ctx context.Context) (*u_d.User, error)

DisableOTP function disables 2FA.

func (*GatewayControllerImpl) ExecutiveVisitsTenant

func (impl *GatewayControllerImpl) ExecutiveVisitsTenant(ctx context.Context, req *ExecutiveVisitsTenantRequest) error

func (*GatewayControllerImpl) ForgotPassword

func (impl *GatewayControllerImpl) ForgotPassword(ctx context.Context, email string) error

func (*GatewayControllerImpl) GenerateOTP

GenerateOTP function generates the time-based one-time password (TOTP) secret for the user. The user must use these values to generate a QR to present to the user.

func (*GatewayControllerImpl) GenerateOTPAndQRCodePNGImage

func (impl *GatewayControllerImpl) GenerateOTPAndQRCodePNGImage(ctx context.Context) ([]byte, error)

func (*GatewayControllerImpl) GetUserBySessionID

func (impl *GatewayControllerImpl) GetUserBySessionID(ctx context.Context, sessionID string) (*user_s.User, error)

func (*GatewayControllerImpl) Login

func (impl *GatewayControllerImpl) Login(ctx context.Context, email, password string) (*gateway_s.LoginResponseIDO, error)

func (*GatewayControllerImpl) Logout

func (impl *GatewayControllerImpl) Logout(ctx context.Context) error

func (*GatewayControllerImpl) PasswordReset

func (impl *GatewayControllerImpl) PasswordReset(ctx context.Context, req *PasswordResetRequestIDO) error

func (*GatewayControllerImpl) Profile

func (*GatewayControllerImpl) ProfileChangePassword

func (impl *GatewayControllerImpl) ProfileChangePassword(ctx context.Context, req *ProfileChangePasswordRequestIDO) error

func (*GatewayControllerImpl) ProfileUpdate

func (impl *GatewayControllerImpl) ProfileUpdate(ctx context.Context, req *ProfileUpdateRequestIDO) error

func (*GatewayControllerImpl) ProfileUpdateAssociate

func (impl *GatewayControllerImpl) ProfileUpdateAssociate(sessCtx mongo.SessionContext, req *ProfileUpdateRequestIDO, ou *u_d.User) error

func (*GatewayControllerImpl) ProfileUpdateAssociateJobSeeker

func (impl *GatewayControllerImpl) ProfileUpdateAssociateJobSeeker(sessCtx mongo.SessionContext, req *ProfileUpdateRequestIDO, ou *u_d.User) error

func (*GatewayControllerImpl) ProfileUpdateCustomer

func (impl *GatewayControllerImpl) ProfileUpdateCustomer(sessCtx mongo.SessionContext, req *ProfileUpdateRequestIDO, ou *u_d.User) error

func (*GatewayControllerImpl) ProfileUpdateExecutiveStaff

func (impl *GatewayControllerImpl) ProfileUpdateExecutiveStaff(sessCtx mongo.SessionContext, req *ProfileUpdateRequestIDO, ou *u_d.User) error

func (*GatewayControllerImpl) ProfileUpdateStaff

func (impl *GatewayControllerImpl) ProfileUpdateStaff(sessCtx mongo.SessionContext, req *ProfileUpdateRequestIDO, ou *u_d.User) error

func (*GatewayControllerImpl) RecoveryOTP

RecoveryOTP function verifies provided `backup code` for the logged in user and disable 2FA plus log user in if successfully verified.

func (*GatewayControllerImpl) RefreshToken

func (impl *GatewayControllerImpl) RefreshToken(ctx context.Context, value string) (*user_s.User, string, time.Time, string, time.Time, error)

func (*GatewayControllerImpl) ValidateOTP

ValidateOTP function verifies provided token from the third-party authenticator app. The purpose of this function is enable the loggin for 2FA.

func (*GatewayControllerImpl) VerifyOTP

VerifyOTP function verifies provided token from the third-party authenticator app. The purpose of this function is to finish the otp setup.

type OTPGenerateResponseIDO

type OTPGenerateResponseIDO struct {
	Base32     string `json:"base32"`
	OTPAuthURL string `json:"otpauth_url"`
}

type PasswordResetRequestIDO

type PasswordResetRequestIDO struct {
	VerificationCode string `json:"verification_code"`
	Password         string `json:"password"`
	PasswordRepeated string `json:"password_repeated"`
}

type ProfileChangePasswordRequestIDO

type ProfileChangePasswordRequestIDO struct {
	OldPassword      string `json:"old_password"`
	Password         string `json:"password"`
	PasswordRepeated string `json:"password_repeated"`
}

type ProfileResponse

type ProfileResponse struct {
	// --- USER --- //
	ID                      primitive.ObjectID `bson:"_id" json:"id"`
	Email                   string             `bson:"email" json:"email"`
	FirstName               string             `bson:"first_name" json:"first_name"`
	LastName                string             `bson:"last_name" json:"last_name"`
	Name                    string             `bson:"name" json:"name"`
	LexicalName             string             `bson:"lexical_name" json:"lexical_name"`
	OrganizationName        string             `bson:"organization_name" json:"organization_name"`
	OrganizationType        int8               `bson:"organization_type" json:"organization_type"`
	TenantID                primitive.ObjectID `bson:"tenant_id" json:"tenant_id,omitempty"`
	TenantName              string             `bson:"tenant_name" json:"tenant_name"`
	Role                    int8               `bson:"role" json:"role"`
	ReferenceID             primitive.ObjectID `bson:"reference_id" json:"reference_id,omitempty"` // Reference the record this user belongs to by the role they are assigned, the choices are either: Customer, Associate, or Staff.
	HasStaffRole            bool               `bson:"has_staff_role" json:"has_staff_role"`
	WasEmailVerified        bool               `bson:"was_email_verified" json:"was_email_verified"`
	EmailVerificationCode   string             `bson:"email_verification_code,omitempty" json:"email_verification_code,omitempty"`
	EmailVerificationExpiry time.Time          `bson:"email_verification_expiry,omitempty" json:"email_verification_expiry,omitempty"`
	Phone                   string             `bson:"phone" json:"phone,omitempty"`
	Country                 string             `bson:"country" json:"country,omitempty"`
	Region                  string             `bson:"region" json:"region,omitempty"`
	City                    string             `bson:"city" json:"city,omitempty"`
	AgreeTOS                bool               `bson:"agree_tos" json:"agree_tos,omitempty"`
	AgreePromotionsEmail    bool               `bson:"agree_promotions_email" json:"agree_promotions_email,omitempty"`
	CreatedAt               time.Time          `bson:"created_at" json:"created_at"`
	ModifiedAt              time.Time          `bson:"modified_at" json:"modified_at"`
	Status                  int8               `bson:"status" json:"status"`
	JoinedTime              time.Time          `bson:"joined_time" json:"joined_time,omitempty"`
	PublicID                uint64             `bson:"public_id" json:"public_id,omitempty"`
	Timezone                string             `bson:"timezone" json:"timezone,omitempty"`
	OTPEnabled              bool               `bson:"otp_enabled" json:"otp_enabled"`
	OTPVerified             bool               `bson:"otp_verified" json:"otp_verified"`
	OTPValidated            bool               `bson:"otp_validated" json:"otp_validated"`
	OTPSecret               string             `bson:"otp_secret" json:"-"`
	OTPAuthURL              string             `bson:"otp_auth_url" json:"-"`

	// --- STAFF --- //
	PersonalEmail                        string             `bson:"personal_email" json:"personal_email"`
	IsOkToEmail                          bool               `bson:"is_ok_to_email" json:"is_ok_to_email"`
	PhoneType                            int8               `bson:"phone_type" json:"phone_type"`
	PhoneExtension                       string             `bson:"phone_extension" json:"phone_extension"`
	IsOkToText                           bool               `bson:"is_ok_to_text" json:"is_ok_to_text"`
	FaxNumber                            string             `bson:"fax_number" json:"fax_number"`
	OtherPhone                           string             `bson:"other_phone" json:"other_phone"`
	OtherPhoneExtension                  string             `bson:"other_phone_extension" json:"other_phone_extension"`
	OtherPhoneType                       int8               `bson:"other_phone_type" json:"other_phone_type"`
	PostalCode                           string             `bson:"postal_code" json:"postal_code,omitempty"`
	AddressLine1                         string             `bson:"address_line1" json:"address_line1,omitempty"`
	AddressLine2                         string             `bson:"address_line2" json:"address_line2,omitempty"`
	PostOfficeBoxNumber                  string             `bson:"post_office_box_number" json:"post_office_box_number"`
	FullAddressWithoutPostalCode         string             `bson:"full_address_without_postal_code" json:"full_address_without_postal_code,omitempty"` // Compiled value
	FullAddressWithPostalCode            string             `bson:"full_address_with_postal_code" json:"full_address_with_postal_code,omitempty"`       // Compiled value
	FullAddressURL                       string             `bson:"full_address_url" json:"full_address_url,omitempty"`                                 // Compiled value
	HasShippingAddress                   bool               `bson:"has_shipping_address" json:"has_shipping_address,omitempty"`
	ShippingName                         string             `bson:"shipping_name" json:"shipping_name,omitempty"`
	ShippingPhone                        string             `bson:"shipping_phone" json:"shipping_phone,omitempty"`
	ShippingCountry                      string             `bson:"shipping_country" json:"shipping_country,omitempty"`
	ShippingRegion                       string             `bson:"shipping_region" json:"shipping_region,omitempty"`
	ShippingCity                         string             `bson:"shipping_city" json:"shipping_city,omitempty"`
	ShippingPostalCode                   string             `bson:"shipping_postal_code" json:"shipping_postal_code,omitempty"`
	ShippingAddressLine1                 string             `bson:"shipping_address_line1" json:"shipping_address_line1,omitempty"`
	ShippingAddressLine2                 string             `bson:"shipping_address_line2" json:"shipping_address_line2,omitempty"`
	ShippingPostOfficeBoxNumber          string             `bson:"shipping_post_office_box_number" json:"shipping_post_office_box_number"`
	ShippingFullAddressWithoutPostalCode string             `bson:"shipping_full_address_without_postal_code" json:"shipping_full_address_without_postal_code,omitempty"` // Compiled value
	ShippingFullAddressWithPostalCode    string             `bson:"shipping_full_address_with_postal_code" json:"shipping_full_address_with_postal_code,omitempty"`       // Compiled value
	ShippingFullAddressURL               string             `bson:"shipping_full_address_url" json:"shipping_full_address_url,omitempty"`                                 // Compiled value
	HowDidYouHearAboutUsID               primitive.ObjectID `bson:"how_did_you_hear_about_us_id" json:"how_did_you_hear_about_us_id,omitempty"`
	HowDidYouHearAboutUsText             string             `bson:"how_did_you_hear_about_us_text" json:"how_did_you_hear_about_us_text,omitempty"`
	IsHowDidYouHearAboutUsOther          bool               `bson:"is_how_did_you_hear_about_us_other" json:"is_how_did_you_hear_about_us_other,omitempty"`
	HowDidYouHearAboutUsOther            string             `bson:"how_did_you_hear_about_us_other" json:"how_did_you_hear_about_us_other,omitempty"`
	Type                                 int8               `bson:"type" json:"type"`
	IsBusiness                           bool               `bson:"is_business" json:"is_business"`
	IsSenior                             bool               `bson:"is_senior" json:"is_senior"`
	IsSupport                            bool               `bson:"is_support" json:"is_support"`
	JobInfoRead                          string             `bson:"job_info_read" json:"job_info_read"`
	DeactivationReason                   int8               `bson:"deactivation_reason" json:"deactivation_reason"`
	DeactivationReasonOther              string             `bson:"deactivation_reason_other" json:"deactivation_reason_other"`
	Description                          string             `bson:"description" json:"description"`
	AvatarObjectExpiry                   time.Time          `bson:"avatar_object_expiry" json:"avatar_object_expiry"`
	AvatarObjectURL                      string             `bson:"avatar_object_url" json:"avatar_object_url"`
	AvatarObjectKey                      string             `bson:"avatar_object_key" json:"avatar_object_key"`
	AvatarFileType                       string             `bson:"avatar_file_type" json:"avatar_file_type"`
	AvatarFileName                       string             `bson:"avatar_file_name" json:"avatar_file_name"`
	BirthDate                            time.Time          `bson:"birth_date" json:"birth_date"`
	JoinDate                             time.Time          `bson:"join_date" json:"join_date"`
	Nationality                          string             `bson:"nationality" json:"nationality"`
	Gender                               int8               `bson:"gender" json:"gender"`
	GenderOther                          string             `bson:"gender_other" json:"gender_other"`
	TaxID                                string             `bson:"tax_id" json:"tax_id"`
	Elevation                            float64            `bson:"elevation" json:"elevation"`
	Latitude                             float64            `bson:"latitude" json:"latitude"`
	Longitude                            float64            `bson:"longitude" json:"longitude"`
	AreaServed                           string             `bson:"area_served" json:"area_served"`
	PreferredLanguage                    string             `bson:"preferred_language" json:"preferred_language"`
	ContactType                          string             `bson:"contact_type" json:"contact_type"`
	HourlySalaryDesired                  int64              `bson:"hourly_salary_desired" json:"hourly_salary_desired"`
	LimitSpecial                         string             `bson:"limit_special" json:"limit_special"`
	DuesDate                             time.Time          `bson:"dues_date" json:"dues_date"`
	CommercialInsuranceExpiryDate        time.Time          `bson:"commercial_insurance_expiry_date" json:"commercial_insurance_expiry_date"`
	AutoInsuranceExpiryDate              time.Time          `bson:"auto_insurance_expiry_date" json:"auto_insurance_expiry_date"`
	WsibNumber                           string             `bson:"wsib_number" json:"wsib_number"`
	WsibInsuranceDate                    time.Time          `bson:"wsib_insurance_date" json:"wsib_insurance_date"`
	PoliceCheck                          time.Time          `bson:"police_check" json:"police_check"`
	DriversLicenseClass                  string             `bson:"drivers_license_class" json:"drivers_license_class"`
	Score                                float64            `bson:"score" json:"score"`
	BalanceOwingAmount                   float64            `bson:"balance_owing_amount" json:"balance_owing_amount"`
	EmergencyContactName                 string             `bson:"emergency_contact_name" json:"emergency_contact_name"`
	EmergencyContactRelationship         string             `bson:"emergency_contact_relationship" json:"emergency_contact_relationship"`
	EmergencyContactTelephone            string             `bson:"emergency_contact_telephone" json:"emergency_contact_telephone"`
	EmergencyContactAlternativeTelephone string             `bson:"emergency_contact_alternative_telephone" json:"emergency_contact_alternative_telephone"`
}

type ProfileUpdateRequestIDO

type ProfileUpdateRequestIDO struct {
	FirstName                            string               `bson:"first_name" json:"first_name"`
	LastName                             string               `bson:"last_name" json:"last_name"`
	Email                                string               `json:"email"`
	IsOkToEmail                          bool                 `json:"is_ok_to_email"`
	Phone                                string               `json:"phone,omitempty"`
	PhoneType                            int8                 `json:"phone_type"`
	PhoneExtension                       string               `json:"phone_extension"`
	IsOkToText                           bool                 `json:"is_ok_to_text"`
	OtherPhone                           string               `json:"other_phone"`
	OtherPhoneExtension                  string               `json:"other_phone_extension"`
	OtherPhoneType                       int8                 `json:"other_phone_type"`
	Country                              string               `json:"country,omitempty"`
	Region                               string               `json:"region,omitempty"`
	City                                 string               `json:"city,omitempty"`
	PostalCode                           string               `json:"postal_code,omitempty"`
	AddressLine1                         string               `json:"address_line1,omitempty"`
	AddressLine2                         string               `json:"address_line2,omitempty"`
	HasShippingAddress                   bool                 `json:"has_shipping_address,omitempty"`
	ShippingName                         string               `json:"shipping_name,omitempty"`
	ShippingPhone                        string               `json:"shipping_phone,omitempty"`
	ShippingCountry                      string               `json:"shipping_country,omitempty"`
	ShippingRegion                       string               `json:"shipping_region,omitempty"`
	ShippingCity                         string               `json:"shipping_city,omitempty"`
	ShippingPostalCode                   string               `json:"shipping_postal_code,omitempty"`
	ShippingAddressLine1                 string               `json:"shipping_address_line1,omitempty"`
	ShippingAddressLine2                 string               `json:"shipping_address_line2,omitempty"`
	SkillSets                            []primitive.ObjectID `bson:"skill_sets" json:"skill_sets,omitempty"`
	InsuranceRequirements                []primitive.ObjectID `bson:"insurance_requirements" json:"insurance_requirements,omitempty"`
	VehicleTypes                         []primitive.ObjectID `bson:"vehicle_types" json:"vehicle_types,omitempty"`
	AwayLogs                             []primitive.ObjectID `bson:"away_logs" json:"away_logs,omitempty"`
	Tags                                 []primitive.ObjectID `json:"tags,omitempty"`
	HowDidYouHearAboutUsID               primitive.ObjectID   `json:"how_did_you_hear_about_us_id,omitempty"`
	IsHowDidYouHearAboutUsOther          bool                 `json:"is_how_did_you_hear_about_us_other,omitempty"`
	HowDidYouHearAboutUsOther            string               `json:"how_did_you_hear_about_us_other,omitempty"`
	BirthDate                            string               `json:"birth_date"`
	BirthDateDT                          time.Time            `json:"-"`
	JoinDate                             string               `json:"join_date"`
	JoinDateDT                           time.Time            `json:"-"`
	Gender                               int8                 `bson:"gender" json:"gender"`
	GenderOther                          string               `bson:"gender_other" json:"gender_other"`
	AdditionalComment                    string               `json:"additional_comment"`
	Description                          string               `bson:"description" json:"description"`
	IsJobSeeker                          int8                 `bson:"is_job_seeker" json:"is_job_seeker"`
	StatusInCountry                      int8                 `bson:"status_in_country" json:"status_in_country"`
	StatusInCountryOther                 string               `bson:"status_in_country_other" json:"status_in_country_other"`
	CountryOfOrigin                      string               `bson:"country_of_origin" json:"country_of_origin"`
	DateOfEntryIntoCountry               string               `bson:"date_of_entry_into_country" json:"date_of_entry_into_country"`
	DateOfEntryIntoCountryDT             time.Time            `json:"-"`
	MaritalStatus                        int8                 `bson:"marital_status" json:"marital_status"`
	MaritalStatusOther                   string               `bson:"marital_status_other" json:"marital_status_other"`
	AccomplishedEducation                int8                 `bson:"accomplished_education" json:"accomplished_education"`
	AccomplishedEducationOther           string               `bson:"accomplished_education_other" json:"accomplished_education_other"`
	TaxID                                string               `bson:"tax_id" json:"tax_id"`
	HourlySalaryDesired                  int64                `bson:"hourly_salary_desired" json:"hourly_salary_desired"`
	LimitSpecial                         string               `bson:"limit_special" json:"limit_special"`
	DuesDate                             string               `bson:"dues_date" json:"dues_date"`
	DuesDateDT                           time.Time            `json:"-"`
	CommercialInsuranceExpiryDate        string               `bson:"commercial_insurance_expiry_date" json:"commercial_insurance_expiry_date"`
	CommercialInsuranceExpiryDateDT      time.Time            `json:"-"`
	AutoInsuranceExpiryDate              string               `bson:"auto_insurance_expiry_date" json:"auto_insurance_expiry_date"`
	AutoInsuranceExpiryDateDT            time.Time            `json:"-"`
	WsibNumber                           string               `bson:"wsib_number" json:"wsib_number"`
	WsibInsuranceDate                    string               `bson:"wsib_insurance_date" json:"wsib_insurance_date"`
	WsibInsuranceDateDT                  time.Time            `json:"-"`
	PoliceCheck                          string               `bson:"police_check" json:"police_check"`
	PoliceCheckDT                        time.Time            `json:"-"`
	DriversLicenseClass                  string               `bson:"drivers_license_class" json:"drivers_license_class"`
	ServiceFeeID                         primitive.ObjectID   `bson:"service_fee_id" json:"service_fee_id"`
	PreferredLanguage                    string               `bson:"preferred_language" json:"preferred_language"`
	EmergencyContactName                 string               `bson:"emergency_contact_name" json:"emergency_contact_name"`
	EmergencyContactRelationship         string               `bson:"emergency_contact_relationship" json:"emergency_contact_relationship"`
	EmergencyContactTelephone            string               `bson:"emergency_contact_telephone" json:"emergency_contact_telephone"`
	EmergencyContactAlternativeTelephone string               `bson:"emergency_contact_alternative_telephone" json:"emergency_contact_alternative_telephone"`
	IdentifyAs                           []int8               `bson:"identify_as" json:"identify_as,omitempty"`
	AgreePromotionsEmail                 bool                 `bson:"agree_promotions_email,omitempty" json:"agree_promotions_email,omitempty"`
}

type RecoveryRequestIDO

type RecoveryRequestIDO struct {
	BackupCode string `json:"backup_code"`
}

type ValidateTokenRequestIDO

type ValidateTokenRequestIDO struct {
	Token string `json:"token"`
}

type ValidateTokenResponseIDO

type ValidateTokenResponseIDO struct {
	User *u_d.User `json:"user"`
}

type VerificationTokenRequestIDO

type VerificationTokenRequestIDO struct {
	VerificationToken string `json:"verification_token"`
}

type VerificationTokenResponseIDO

type VerificationTokenResponseIDO struct {
	User          *u_d.User `json:"user"`
	OTPBackupCode string    `json:"otp_backup_code"`
}

Jump to

Keyboard shortcuts

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