Invitar otra vez al usuario eliminado

Probablemente sea un caso límite: al probar un punto final de API (/invites.json), todo funciona correctamente. Luego eliminé al usuario invitado y ahora recibo una respuesta 422 de ese punto final. Usando el explorador de datos, puedo ver que el usuario ya no existe, pero la invitación sigue aparecida en la tabla de invitaciones.

¿Es posible invitar a un usuario con una dirección de correo electrónico que haya sido eliminada previamente?

4 Me gusta

¡Hola, bienvenido! Para aclarar: ¿el usuario invitado ya había aceptado la invitación o creado su cuenta antes de que lo eliminaras?

1 me gusta

¡Gracias! Sí, acepté la invitación y luego eliminé la cuenta.

1 me gusta

De acuerdo, no he podido reproducir el comportamiento que describes a menos que esté malinterpretando algo sobre lo que esperas lograr (totalmente posible). Sería de ayuda si pudieras explicar qué esperabas ver en comparación con lo que realmente estás viendo.

Sin embargo, estoy utilizando:

Versión: 2.7.0beta7
SO: Ubuntu 20.04.1 LTS

Y realicé lo siguiente:

  • Invité a un usuario con una dirección de correo electrónico específica desde la interfaz de usuario: Administración > Usuarios > Enviar invitaciones
    • Invité y seleccioné la opción de restringir la invitación a una dirección de correo electrónico específica
  • Acepté la invitación desde el correo electrónico especificado en una ventana de incógnito separada
  • Como usuario administrador en mi ventana original, eliminé al usuario recién registrado
  • Usé Postman para enviar una solicitud GET a https://example.dev/u/my-dev-user/invited.json
    • ¿Es este el endpoint que estabas usando? Mencionaste /invites.json, pero obtengo un error 404 al usarlo de todos modos; no estoy completamente seguro de que exista.
  • Recibí la siguiente respuesta después de eliminar el usuario, lo cual era lo esperado ya que eliminé al usuario: ninguno pendiente, ninguno canjeado y ninguno expirado:
{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

Debería ser posible: acabo de volver a invitar a ese mismo correo electrónico que eliminé anteriormente sin ningún problema.

2 Me gusta

Ah, lo siento, debería haber especificado el endpoint. Discourse API Docs

Los pasos que seguí fueron:

  • Invitar al usuario usando el endpoint POST Discourse API Docs
  • Aceptar la invitación por correo electrónico
  • Iniciar sesión como administrador y eliminar el usuario
  • Intentar invitar al usuario nuevamente mediante el paso 1. Esta vez obtengo una respuesta 422 con el error: ```
    {
    “failed”: “FAILED”
    }
2 Me gusta

Ah, y solo para dar seguimiento: la invitación funciona a través de la interfaz de administración como describiste, pero no a través del endpoint POST que estoy usando.

1 me gusta

¡Oh, ahora lo entiendo, está claro! Sí, ahora puedo reproducirlo.

Puedo enviar invitaciones normales a correos electrónicos nuevos desde la API con una solicitud POST:
Recibo la siguiente respuesta como era de esperar:

SOLICITUD: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPUESTA REAL

{
    "id": 7,
    "invite_key": "inviteKEY",
    "link": "https://example.dev/invites/inviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:57:08.602Z",
    "updated_at": "2021-04-26T23:57:08.602Z",
    "expires_at": "2021-05-26T23:57:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}
  • Luego inicio sesión en otro lugar y acepto la invitación para ese usuario.
  • Después vuelvo a iniciar sesión como administrador y elimino al usuario con el correo: example+something@hey.com
  • A continuación, vuelvo a enviar la misma solicitud POST a la API para invitar a ese usuario nuevamente.

SOLICITUD: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPUESTA ESPERADA

{
    "id": 8,
    "invite_key": "newinviteKEY",
    "link": "https://example.dev/invites/newinviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:59:08.602Z",
    "updated_at": "2021-04-26T23:59:08.602Z",
    "expires_at": "2021-05-26T23:59:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}

RESPUESTA REAL

{
    "failed": "FAILED"
}
3 Me gusta

Ah, bien, no era solo yo :slight_smile: Así que soy nuevo en esto, ¿esto se reporta como un error ahora o hay otro lugar donde publicarlo, por ejemplo, en GitHub?

1 me gusta

¡Esto debería servir como informe, si entiendo correctamente! Entre los dos, creo que hemos cumplido en gran medida con el estándar para un informe de error.

Y luego, con suerte, alguien que pueda proporcionar una explicación, una solución alternativa y/o una corrección nos indicará qué hacer.

6 Me gusta

@hcw-rohan @weallwegot Este error ha sido corregido en #12927.

Hola,

Creo que quizás la corrección del error se ha revertido o ya no funciona, ya que me encontré con este problema hoy. Seguí los siguientes pasos para identificar el problema:

  • Eliminé un usuario en el panel de administración
  • Invité al usuario a través de la API
  • Obtuve el mensaje de error

  • Eliminé las invitaciones pendientes para el usuario eliminado

  • Invité al usuario eliminado a través de la API

  • Obtuve el mensaje de éxito

  • Recibí la invitación, pero al hacer clic apareció la advertencia: “¡Lo sentimos! Esta invitación está destinada a usuarios nuevos que aún no tienen una cuenta existente”.

  • Ni la API ni el panel de administración pueden encontrar al usuario eliminado

  • Finalmente, intenté abrir el enlace de la invitación en una ventana de incógnito y pude iniciar sesión como un nuevo usuario. ¿Podría ser un problema con las cookies?

  • Intenté agregar un nuevo usuario a través de la API

  • Obtuve el mensaje de éxito

Espero que esto ayude.

Hola Greg,

Intenté reproducir el error, pero en mi caso funcionó volver a invitar a un usuario que había sido eliminado. Probé tanto con invitaciones por correo electrónico como por enlace.

¿Estás seguro de que no habías iniciado sesión cuando accediste a la página de la invitación? Hay una única ruta de código que muestra este mensaje y no veo ningún problema obvio.