Caso de uso:

Imaginemos que un cliente B2B quiere crear un wizard para que el administrador de su organización pueda dar acceso a sus colaboradores con un rol especifico.

Es decir, crearemos un componente que se encargue de crear usuarios, cambiar sus roles, editarlos y eliminarlos.

Es bastante sencillo, lo único que debes tener presente es la siguiente app instalada. La cual se va encargar de gestionar tus organizaciones.

vtex.b2b-organizations@1.x

Aquí tienes algo de documentación sobre la app vtex.b2b-organizations.

Una vez confirmes que tienes la app instalada, debes tener al menos una organización creada.

Manos a la obra:

Una vez confirmamos que tenemos las organizaciones creadas lo único que debemos hacer es consultar la entidad de datos, si leíste la documentación anterior completa sabrás que la app de b2b se conecta a master data v2.

Para conocer la diferencia entre master data V1 y V2 revisa este post.

Por lo cual no puedes ir a buscar la entidad de datos gráficamente en el administrador de VTEX, debes hacerlo vía REST API.

Para crear un usuario primero necesitamos obtener los datos de la organización para luego enlazar nuestro usuario a una organización especifica.

Sabemos que la app de b2b creo tres entidades de datos.

La que nosotros vamos a usar es la entidad cost_centers por que trae los datos que necesitamos. Para nuestro caso necesitamos dos datos el dataInstanceId y el organizationId.

curl --request GET
https://{{accountName}}.{{environment}}/api/dataentities/{{data-entity-name}}/search?_fields=_all

Donde:
{{data-entity-name}} = cost_centers

Deberías obtener un resultado como este:

Estos datos debemos almacenarlos y luego los usaremos en nuestra mutación de graphQL.

Debemos ir al graphql-ide de nuestro administrador y luego buscamos la app que instalamos anteriormente.

Luego creamos nuestra mutación:

mutation ($roleId: ID!, $email: String!, $name: String!, $canImpersonate: Boolean, $orgId: ID, $costId: ID) {
  addUser(roleId: $roleId, email: $email, name: $name, canImpersonate: $canImpersonate, orgId: $orgId, costId: $costId) {
    id
    status
    message
  }
}

Y las variables serian las siguientes:

{
  "name": "Manuel Romero",
  "email": "jhon.romero@itglobers.com",
  "canImpersonate": false,
  "orgId": "18ebce7d-2d43-11ed-835d-0aedffbeb723", -> organizationId
  "costId": "19f7aa2f-2d43-11ed-835d-120129f11121", -> dataInstanceId 
  "roleId": "customer-admin"
}

El name y el email puedes solicitarlos por medio de un formulario o cualquier input que tenga tu customización.

Los roles son los siguientes:

Nuestra mutación quedaría de la siguiente manera y obtendriamos el siguiente resultado al ejecutarla.

Una vez obtenemos el success podemos ir a nuestro administrador a confirmar que el usuario este correctamente creado.

Eso es todo, ya tienes el usuario creado. Lo interesante de este tutorial es que con esta misma lógica vas a poder eliminar y editar usuarios, lo único que debes hacer es revisar los datos que necesites en cada mutación.

Eso lo puedes revisar en el panel derecho del graphql.


Espero les sirva la info, si ven que algo esta mal no duden en dejarme un mail para corregirlo.