Ideal + locomotivecms: recuerde la página que estaba tratando de visitar antes de que me pidieran iniciar sesión

StackOverflow https://stackoverflow.com/questions/9400738

Pregunta

Estoy tratando de agregar una característica simple para locomotivecms (github). Una característica muy simple: actualmente los usuarios se redirigen al "centro de administración principal" (/admin/) después de iniciar sesión, incluso si intentaban editar una página diferente. Quiero que se dirijan a esa página después de iniciar sesión.

Parece algo muy simple y razonable de agregar, pero después de dos días, he decidido pedir ayuda.

Esto es lo que he descubierto hasta ahora.

  • Esta aplicación no usa Activerecord, pero Mongoide (el Backend DB es MongoDB)
  • Locomotive no utiliza un esquema simple de "usuario". La autenticación se divide en dos partes: "Cuentas" (correo electrónico, contraseña, nombre, etc.) y "Sitio" (es un CMS de varios sitios). Un "sitio" tiene muchas "Memberships". Una membresía tiene un sitio_id y cuenta_id (y también un papel, pero eso no es importante para esto, creo).
  • La mayor parte de la "acción" en la locomotora está detrás de la /admin/ ruta. Por ejemplo, la ruta de inicio de sesión es /admin/log_in . La mayoría de los controladores están dentro de un /admin/ subcarpeta también.
  • He encontrado esta bit en el /admin/sessions_controller que aparentemente "arregla" la URL que se visitará después de haber iniciado sesión en el /admin/ raíz.

Aquí está el bit relevante:

def after_sign_in_path_for(resource)
  admin_pages_url
end

Estoy casi seguro de que lo que necesito es esto:

def after_sign_in_path_for(resource)
  stored_location_for(resource) || admin_pages_url
end

Si he entendido correctamente la documentación de dispositivos, stored_location_for busca un valor en la sesión (session['admin_return_to'] en el caso de la locomotora) para "ver si alguien quiere volver a algún lado". Si está vacío, el || Asegura un camino seguro a la raíz de administración.

Lamentablemente esto no funciona. Parece que la variable de sesión que necesito nunca está configurada. Suponía que DeDise hizo este tipo automáticamente.

¿Debo establecer el valor de la sesión yo mismo? ¿Si es así, donde? ¿O mis suposiciones están equivocadas?

¡Muchas gracias!

¿Fue útil?

Solución

La mejor solución se actualiza a la última versión de Locomotivecms.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top