Soy consciente de Discourse Patreon. Aunque mi pregunta involucra a Patreon, el “plugin de Patreon” no es la solución que busco.
¿Existe una buena manera de extender una clase de Ruby para especificar una lista de control de acceso mediante código?
Por ejemplo: quiero asegurarme de que solo los miembros de Patreon puedan publicar en cierto foro; que solo las personas de cierto nivel de confianza puedan responder, etc., pero no quiero esto como casillas de verificación en alguna interfaz gráfica. Quiero poder extender alguna clase en Ruby y, mediante código, especificar la lista de control de acceso.
¿Es algo fácil o difícil de hacer en Discourse?
Puedes hacer lo que quieras en un plugin.
No te recomendaría gestionar listas de control de acceso (ACL) en el código. Por supuesto, puedes cambiar el comportamiento y las reglas, pero el control de acceso debería ser lo más transparente e intuitivo posible para el administrador, ¿no crees? Además, habrá momentos en los que necesites realizar un cambio de urgencia. ¡No querrás depender de una versión de código para hacerlo!
Intenta comprender completamente el modelo existente y ve si puedes lograr lo que necesitas sin realizar cambios en el código. La seguridad es un elemento muy importante pero complicado, y mientras aproveches el marco de trabajo existente, el equipo de Discourse te respaldará. Si cambias cosas, corres un mayor riesgo y estarás por tu cuenta.
Ten también en cuenta que los cambios de tu plugin deben ser robustos frente a la evolución del núcleo. Las anulaciones deben escribirse de manera que sea más probable que sigan funcionando a medida que el código original evolucione. Este es un equilibrio delicado y representa una sobrecarga de mantenimiento. No poder actualizar tu instancia porque tu plugin se rompería es un riesgo de seguridad en sí mismo.
Al final del día, los plugins son especialmente adecuados para cambios más superficiales e inofensivos, pero aplicarlos a la capa de seguridad solo debe hacerse tras una consideración seria. Sin embargo, hay excepciones, como los plugins de OAuth, que funcionan con características de la plataforma que te permiten integrar de forma segura nuevos proveedores.
Dicho esto, ¡buena suerte!
1 me gusta