lib/rules/auth0.go

72 lines
1.8 KiB
Go

package rules
import (
"fmt"
"code.tnxs.net/taxnexus/lib/api/devops/devops_client/user"
"code.tnxs.net/taxnexus/lib/api/devops/devops_models"
"code.tnxs.net/taxnexus/lib/api/workflow/workflow_client/outgoing_email_message"
"code.tnxs.net/taxnexus/lib/api/workflow/workflow_models"
"code.tnxs.net/taxnexus/lib/app"
httptransport "github.com/go-openapi/runtime/client"
"go.temporal.io/sdk/workflow"
)
// StoreAuth0UserActivity creates a new Auth0 user tied to a User record
func StoreAuth0UserActivity(ctx workflow.Context, w app.UserChannelWrapper) error { //nolint:gocritic // don't care
auth0UserID, err := app.GetAuth0UserByEmail(w.Obj.Email)
if err != nil {
return err
}
if auth0UserID != "not found" {
return fmt.Errorf("rules.StoreAuth0UserActivity: 💣 ⛔ Auth0 user exists: %s", auth0UserID)
}
newAuth0UserID, err := app.CreateNewAuth0User(&app.NewAuth0User{})
if err != nil {
return err
}
putUser := w.Obj
putUser.Auth0UserID = newAuth0UserID
//
// update Taxnexus user
//
putUserParams := user.NewPutUsersParamsWithTimeout(getTimeout)
putUserParams.UserRequest = &devops_models.UserRequest{
Data: []*devops_models.User{&putUser},
}
_, err = devopsClient.User.PutUsers(putUserParams,
httptransport.APIKeyAuth(
"X-API-Key",
"header",
w.APIKey,
))
if err != nil {
return err
}
//
// send emails
//
emailParams := outgoing_email_message.NewPostOutgoingEmailMessagesParamsWithTimeout(postTimeout)
emailParams.OutgoingEmailMessageRequest = &workflow_models.OutgoingEmailMessageRequest{
Data: []*workflow_models.OutgoingEmailMessage{
{
Subject: putUser.ID,
},
},
}
_, err = workflowClient.
OutgoingEmailMessage.
PostOutgoingEmailMessages(
emailParams,
httptransport.APIKeyAuth(
"X-API-Key",
"header",
w.APIKey,
),
)
if err != nil {
return err
}
return nil
}