|
@@ -4,7 +4,6 @@ import (
|
|
"context"
|
|
"context"
|
|
"fmt"
|
|
"fmt"
|
|
"github.com/Nerzal/gocloak/v12"
|
|
"github.com/Nerzal/gocloak/v12"
|
|
- "github.com/gshopify/service-wrapper/model"
|
|
|
|
"github.com/gshopify/service-wrapper/scalar"
|
|
"github.com/gshopify/service-wrapper/scalar"
|
|
"github.com/gshopify/service-wrapper/server/middleware"
|
|
"github.com/gshopify/service-wrapper/server/middleware"
|
|
"gshopper.com/gshopify/customer/graphql/generated"
|
|
"gshopper.com/gshopify/customer/graphql/generated"
|
|
@@ -17,6 +16,7 @@ func (r *mutationResolver) CustomerUpdate(
|
|
var (
|
|
var (
|
|
inContext, err = middleware.InContext(ctx)
|
|
inContext, err = middleware.InContext(ctx)
|
|
response = &generated.CustomerUpdatePayload{}
|
|
response = &generated.CustomerUpdatePayload{}
|
|
|
|
+ claims *m.Claims
|
|
customer *generated.Customer
|
|
customer *generated.Customer
|
|
phone *m.Phone
|
|
phone *m.Phone
|
|
)
|
|
)
|
|
@@ -25,13 +25,13 @@ func (r *mutationResolver) CustomerUpdate(
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
|
|
- if _, _, err = r.decodeAccessToken(ctx, t); err != nil {
|
|
|
|
|
|
+ if _, claims, err = r.decodeAccessToken(ctx, t); err != nil {
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
CustomerError(generated.CustomerErrorCodeTokenInvalid, err, "customerAccessToken"))
|
|
CustomerError(generated.CustomerErrorCodeTokenInvalid, err, "customerAccessToken"))
|
|
return response, nil
|
|
return response, nil
|
|
}
|
|
}
|
|
|
|
|
|
- customer, err = r.customer(ctx, t)
|
|
|
|
|
|
+ customer, err = r.customer(ctx, claims.Sub)
|
|
if err != nil {
|
|
if err != nil {
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
CustomerError(generated.CustomerErrorCodeTokenInvalid, err, "customerAccessToken"))
|
|
CustomerError(generated.CustomerErrorCodeTokenInvalid, err, "customerAccessToken"))
|
|
@@ -75,13 +75,10 @@ func (r *mutationResolver) CustomerUpdate(
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
- customer.UpdatedAt = scalar.Now()
|
|
|
|
- customer.Metafields = append(customer.Metafields,
|
|
|
|
- NewMetafield("updated_at", customer.UpdatedAt, model.MetafieldTypeDateTime))
|
|
|
|
-
|
|
|
|
for _, metafield := range customer.Metafields {
|
|
for _, metafield := range customer.Metafields {
|
|
(*user.Attributes)[metafield.Key] = []string{metafield.Value}
|
|
(*user.Attributes)[metafield.Key] = []string{metafield.Value}
|
|
}
|
|
}
|
|
|
|
+ (*user.Attributes)["updated_at"] = []string{fmt.Sprintf("%d", scalar.Now())}
|
|
|
|
|
|
// update user properties & attributes
|
|
// update user properties & attributes
|
|
admin, err := r.conf.Admin.Token(r.client, ctx)
|
|
admin, err := r.conf.Admin.Token(r.client, ctx)
|
|
@@ -91,7 +88,7 @@ func (r *mutationResolver) CustomerUpdate(
|
|
return response, nil
|
|
return response, nil
|
|
}
|
|
}
|
|
|
|
|
|
- if err := r.client.UpdateUser(ctx, admin.AccessToken, r.conf.Cli.Realm, user); err != nil {
|
|
|
|
|
|
+ if err = r.client.UpdateUser(ctx, admin.AccessToken, r.conf.Cli.Realm, user); err != nil {
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
CustomerError(generated.CustomerErrorCodeInvalid, err))
|
|
CustomerError(generated.CustomerErrorCodeInvalid, err))
|
|
return response, nil
|
|
return response, nil
|
|
@@ -99,15 +96,15 @@ func (r *mutationResolver) CustomerUpdate(
|
|
|
|
|
|
// update user password
|
|
// update user password
|
|
if udata.Password != nil {
|
|
if udata.Password != nil {
|
|
- err = r.client.SetPassword(ctx, admin.AccessToken, customer.ID, r.conf.Cli.Realm, *udata.Password, false)
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ var payload *generated.CustomerAccessTokenCreatePayload
|
|
|
|
+
|
|
|
|
+ if err = r.setPassword(ctx, customer.ID, *udata.Password, true); err != nil {
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
response.CustomerUserErrors = append(response.CustomerUserErrors,
|
|
CustomerError(generated.CustomerErrorCodeInvalid, err, "password"))
|
|
CustomerError(generated.CustomerErrorCodeInvalid, err, "password"))
|
|
return response, nil
|
|
return response, nil
|
|
}
|
|
}
|
|
|
|
|
|
_, _ = r.CustomerAccessTokenDelete(ctx, t)
|
|
_, _ = r.CustomerAccessTokenDelete(ctx, t)
|
|
- var payload *generated.CustomerAccessTokenCreatePayload
|
|
|
|
payload, err = r.CustomerAccessTokenCreate(ctx, generated.CustomerAccessTokenCreateInput{
|
|
payload, err = r.CustomerAccessTokenCreate(ctx, generated.CustomerAccessTokenCreateInput{
|
|
Email: *customer.Email,
|
|
Email: *customer.Email,
|
|
Password: *udata.Password,
|
|
Password: *udata.Password,
|