Saltar al contenido principal

Permitir que los visitantes gestionen su propia empresa

Objetivo​

Permitir que las personas que inician sesión en su portal pertenezcan a una empresa: que la creen, inviten a sus compañeros, vean quién está en ella, cambien lo que cada uno puede hacer y la abandonen, todo desde una pantalla que dibuja usted.

Antes de empezar​

  • Un portal que pide a los visitantes que inicien sesión. Consulte Pedir a los visitantes que inicien sesión.
  • El envío de correo electrónico, configurado por quien administra su instalación de Parsware. Una invitación es un mensaje con un vínculo; sin correo electrónico no se puede invitar a nadie.

Por qué estas llamadas son de la plataforma y no de su API personalizada​

Todo lo demás que su portal lee y escribe pasa por una API personalizada que escribió usted. Una empresa no, y conviene saber por qué: quién pertenece a qué empresa lo guarda el servicio de identidad de la plataforma, que acepta la sesión de un visitante solo desde el propio servidor del portal. Su API personalizada no se ejecuta allí (se ejecuta donde están sus tablas), así que a ningún script que pudiera escribir se le permitiría invitar a nadie.

Por eso la plataforma le proporciona las seis llamadas, y usted dibuja la pantalla. En la plataforma no hay ninguna página de personas integrada: la lista de miembros, el cuadro de invitación y el selector de rol los distribuye usted, igual que el resto de su portal.

Las seis llamadas​

LlamadaQué hace
startCompany(name)Crea una empresa con este visitante como su primer Propietario
invitePerson(email) / invitePerson(email, role)Envía una invitación por correo electrónico. Solo Propietarios. Member si no se indica rol
loadCompanyPeople(into) / loadCompanyPeople(into, companyInto)Pone a las personas en un campo de estado, y la empresa en un segundo campo
changePersonRole(person, role)Cambia lo que puede hacer un compañero
removePerson(person)Quita a un compañero, o retira una invitación pendiente
leaveCompany()Este visitante abandona la empresa

Los roles son Miembro (Member), Facturación (Billing) y Propietario (Owner), y cada uno puede hacer todo lo que puede el anterior. Solo los Propietarios invitan, cambian roles y quitan personas; eso lo decide la plataforma, no su pantalla.

Pasos​

  1. Dibuje un cuadro de texto y enlace su valor a un campo de estado, por ejemplo state.text.

  2. Dibuje un botón y asigne a su controlador de clic:

    startCompany(getState("text"));
    createRecord("par_client", { par_name: getState("text") });
    loadCompanyPeople("people", "company");
  3. Dibuje un segundo botón para invitar:

    invitePerson(getState("text"));
    loadCompanyPeople("people", "company");
    notify("Invitation sent.");
  4. En el screenLoad de la pantalla, ponga loadCompanyPeople("people", "company"); para que la página se abra con la lista ya rellena.

El orden del primer botón es todo el truco

startCompany hace dos cosas: crea la empresa y vuelve a apuntar la sesión de este visitante a ella. Solo a partir de ese momento portalCustomerId() devuelve algo, y eso es lo que lee la API personalizada que hay detrás de createRecord para dar a su propio registro el id de la empresa.

Hágalo al revés y no habrá ningún id que dar al registro. Su API nunca lo recibe de la página, ni debe recibirlo: lo decide la plataforma, y eso es lo que impide que un visitante reclame la empresa de otra persona.

Qué llega a sus campos de estado​

loadCompanyPeople("people", "company") rellena dos campos:

  • state.people: una fila por cada compañero y por cada invitación pendiente:

    CampoQué es
    idmember:… o invitation:…; páseselo tal cual a removePerson
    nameSu nombre, o la dirección a la que se envió una invitación
    emailLa dirección con la que inicia sesión
    roleMember, Billing u Owner
    statusMember o Invited
    isYouSi esta fila es la persona que está leyendo la página
  • state.company: { name, role, canManage }. Enlace un rótulo a state.company.name y ponga el enlace visible de su cuadro de invitación en state.company.canManage, para que a un miembro normal no se le muestre un botón que se le va a rechazar.

Quien no pertenece a ninguna empresa recibe una lista vacía y una empresa vacía, lo que no es un error: para eso está su formulario de «crear una empresa».

Un botón Quitar que funciona con los dos tipos de fila​

Repita una tabla sobre state.people y ponga un botón en la fila:

removePerson(row.id);
loadCompanyPeople("people", "company");

Eso quita a un compañero o retira una invitación, porque el id de la fila indica cuál es. No escribe usted esa condición, ni debe hacerlo, porque para la plataforma son dos actos distintos y solo ella conoce las reglas de cada uno.

El rol de una invitación no se puede cambiar. changePersonRole sobre una fila invitation: se rechaza con una explicación: retírela y vuelva a invitar a la persona.

Qué aspecto tiene un rechazo​

La propia frase de la plataforma aparece junto al botón que alguien pulsó: «Solo un Propietario puede invitar a personas», «El último Propietario no puede abandonar la empresa», «Esa dirección ya está en esta empresa».

No necesita escribir esos mensajes y no debería intentar adelantarse a ellos: las reglas pertenecen a la plataforma, y una pantalla que tratara de adivinarlas acabaría adivinando mal.

El último Propietario no puede irse

Quien es el único Propietario de una empresa debe convertir antes a un compañero en Propietario. Es deliberado: una empresa con registros detrás no se queda sin nadie que pueda administrarla porque una persona pulse un botón.

Adónde llega una invitación​

A la puerta de entrada de su portal, igual que un vínculo de confirmación y un vínculo de restablecimiento de contraseña. Quien ha iniciado sesión se une de inmediato; quien no, ve el formulario de inicio de sesión con Le han invitado encima, y la invitación sigue esperando después de que cree una cuenta y confirme su dirección. Consulte Pedir a los visitantes que inicien sesión.

Para qué sirve​

Una empresa es aquello por lo que una directiva de datos acota los registros. Así que estas dos páginas encajan: esta explica cómo alguien llega a tener una empresa, y aquella, cómo las filas de una tabla llegan a pertenecerle.

Temas relacionados​