6 Commits

Author SHA1 Message Date
GotPPay
4b78235ed7 handle complete 2018-06-01 12:07:42 +02:00
GotPPay
f61c8b084d skeleton for completing reset procedure 2018-06-01 12:07:42 +02:00
GotPPay
636b1a1523 temp commit 2018-06-01 12:07:42 +02:00
GotPPay
eec4d177b1 skip token auth on password reset request 2018-06-01 12:07:42 +02:00
GotPPay
4731cfe7c2 add custom error for password reset 2018-06-01 12:07:42 +02:00
GotPPay
06ea1cb44d add password reset model ; create entry in database; send email 2018-06-01 12:07:42 +02:00
7 changed files with 18 additions and 41 deletions

View File

@@ -35,7 +35,7 @@ func New(svc *service.Service, mapper *entitymapping.Mapper, notification *notif
bcbsi := bcbsi.New(cfg)
instance = &Service{
Users: newUserService(svc, mapper, bcbsi, cfg),
Users: newUserService(svc, mapper),
Rides: newRideService(svc, mapper),
Visits: newVisitService(svc, mapper),
Provider: newProviderService(svc, mapper),

View File

@@ -260,10 +260,6 @@ func (s *userService) CheckAndCreateMember(user viewmodel.User, provider viewmod
}
}
if entityUser.UUID == "" {
entityUser = s.mapEntity.User.ToUserEntity(user)
}
var eligibility viewmodel.Eligibility
loc, _ := time.LoadLocation("America/Chicago")
eligibility.TrackingID = s.rangeIn(1000000, 9999999)
@@ -275,7 +271,7 @@ func (s *userService) CheckAndCreateMember(user viewmodel.User, provider viewmod
if err != nil {
return viewmodel.User{}, &viewmodel.ValidationError{Message: fmt.Sprintf("Error finding provider by UUID: %s", err.Error())}
}
} else if entityProvider.InternalID != "" {
} else {
entityProvider, err = s.svc.Provider.GetByNPI(entityProvider.InternalID, entityAuthorUser)
if err != nil {
return viewmodel.User{}, &viewmodel.ValidationError{Message: fmt.Sprintf("Error finding provider by NPI: %s", err.Error())}
@@ -283,8 +279,7 @@ func (s *userService) CheckAndCreateMember(user viewmodel.User, provider viewmod
}
if entityProvider.InternalID == "" {
eligibility.Provider.ProviderNPI = "1699849786"
eligibility.Provider.ProviderName = "LITHOLINK CORPORATION"
return viewmodel.User{}, &viewmodel.ValidationError{Message: "Provider not found"}
} else {
eligibility.Provider.ProviderNPI = entityProvider.InternalID
eligibility.Provider.ProviderName = entityProvider.OrganizatioName

View File

@@ -16,14 +16,12 @@ import (
)
const (
tokenExpirationTime = 90 // in minutes
randomStringLength = 15
baseURL = "http://localhost:5000"
passwordResetEmailSubject = "Reset Your Password"
passwordResetEmailMainBody = "To reset your password click here or copy the following link and paste it into your browser: \n\n " + baseURL + "/#/reset-password/"
passwordResetEmailFooter = "\nThis link expires in 90 minutes"
passwordResetCompleteEmailSubject = "Your Password Has been Reset"
passwordResetCompleteEmailBody = "Your password has been reset. To login click here or copy the following link and paste it into your browser: \n\n" + baseURL + "/#/login"
tokenExpirationTime = 90 // in minutes
randomStringLength = 15
baseURL = "http://localhost:5000"
passwordResetEmailSubject = "Reset Your Password"
passwordResetEmailMainBody = "To reset your password click here or copy the following link and paste it into your browser: \n\n " + baseURL + "/#/reset-password/"
passwordResetEmailFooter = "\nThis link expires in 90 minutes"
)
var (
@@ -90,7 +88,7 @@ func (c *controller) handleResetRequest(ctx echo.Context) error {
notification := viewmodel.Notification{
Type: applicationservice.NotificationTypeEmail,
From: c.cfg.Email.Sender,
To: *user.Email,
To: "test.test.no@yandex.com",
Subject: passwordResetEmailSubject,
Message: passwordResetEmailMainBody + token + passwordResetEmailFooter,
}
@@ -131,26 +129,11 @@ func (c *controller) handleResetComplete(ctx echo.Context) error {
fmt.Println(fullUserData)
//write new password in database
//TODO
if err := c.svc.PasswordReset.SetTokenUsed(userToken); err != nil {
routeutils.ResponseAPIPasswordResetFailed(ctx, "Reset failed")
}
//Send email with reset link
notification := viewmodel.Notification{
Type: applicationservice.NotificationTypeEmail,
From: c.cfg.Email.Sender,
To: *user.Email,
Subject: passwordResetCompleteEmailSubject,
Message: passwordResetCompleteEmailBody,
}
notification, err = c.svc.Notification.SendNotificationWithoutWritingToDatabase(notification)
if err != nil {
return routeutils.HandleAPIError(ctx, err)
}
return routeutils.ResponseAPIOK(ctx, nil)
}

View File

@@ -348,7 +348,11 @@ func (c *controller) handleMember(ctx echo.Context) error {
return routeutils.ResponseAPIAuthError(ctx, "phonenumber or email is required", false)
}
provider := viewmodel.ProviderResp{}
provider, err := c.svc.Provider.GetByNPI("1699849786", authUser)
if err != nil {
return routeutils.ResponseAPIAuthError(ctx, "Provider not found", false)
}
user, err = c.svc.Users.CheckAndCreateMember(user, provider, authUser)
if err != nil {
if validationError, ok := err.(*viewmodel.ValidationError); ok {

View File

@@ -91,10 +91,6 @@ func (c *controller) handleRide(ctx echo.Context) error {
}
ride.Visit.Provider = provider
// user, err := c.svc.Users.GetByUUID(ride.User.ID, "US")
// if err != nil {
// return routeutils.HandleAPIError(ctx, err)
// }
user, err := c.svc.Users.CheckAndCreateMember(ride.Visit.User, provider, authUser)
if err != nil {
if validationError, ok := err.(*viewmodel.ValidationError); ok {
@@ -109,7 +105,6 @@ func (c *controller) handleRide(ctx echo.Context) error {
}
ride.Visit.User = user
ride.User = user
visit.User = user
homeAddress := viewmodel.Address{}
for _, a := range visit.User.Addresses {
@@ -138,9 +133,9 @@ func (c *controller) handleRide(ctx echo.Context) error {
}
ride.Notes = ride.Notes
ride.Passenger.FirstName = ride.Visit.User.First
ride.Passenger.FirstName = visit.User.First
ride.Passenger.LastName = " "
ride.Passenger.PhoneNumber = *ride.Visit.User.PhoneNumber
ride.Passenger.PhoneNumber = *visit.User.PhoneNumber
ride.RideType = "lyft"
ride.VisitDate = &visit.VisitDatetime
ride.VisitTime = &visit.VisitDatetime

View File

@@ -53,7 +53,7 @@ func ValidateSelfregistration(user *viewmodel.User) []errors.ValidationError {
//Provider NPI validation
if len(user.Provider.InternalID) != 10 || !isNumeric(user.Provider.InternalID) {
result = append(result, errors.ValidationError{Field: "provider.internal_id", Message: "Provider NPI must be a 10 digit number"})
result = append(result, errors.ValidationError{Field: "provider.internal_id", Message: "Provider NPI must be 10 digit number"})
}
//First name validation

Binary file not shown.