Buenas a todos!
Estoy trabajando sobre un proyecto en Yii 1.1.16. Este es un sistema de gestión de proyectos.
Explicación de lo que tengo que hacer:
El usuario "Juan" de la empresa "Yii" ingresa a www.misistema.com y se le solicitará sus credenciales. Juan coloca su usuario y contraseña y el sistema les muestra sus Proyectos. Internamente el sistema valida que el usuario "Juan" exista en la base de datos de clientes y setea la base de datos correspondiente durante toda la vida de su sesión. Los usuarios de la empresa "Yii" podrán acceder sólo a sus proyectos y no, por ejemplo, a los de la "Empresa 2".
Hasta aquí viene siendo una infraestructura multi tenant normal. Sería necesario tener una tabla "instancias" donde existe un usuario "Juan" con su contraseña.
Por otro lado, los usuarios de cualquier empresa también podrán consultar y escribir en lo que he denominado "tablas compartidas".
Ejemplo de uso:
-
Juan tiene acceso al Proyecto "Foro de Yii".
-
Los usuarios de la empresa Yii (empresa de Juan) pueden ver el proyecto "Foro de Yii".
-
Los usuarios de la "Empresa 2" no pueden ver el proyecto "Foro de Yii" ya que pertenecen a otra empresa.
-
Juan puede consultar/escribir en la "Tabla compartida 1".
-
Pedro (usuario de la "Empresa 2") puede consultar/escribir en la "Tabla compartida 1".
Notas:
-
Este proyecto tiene implementado el módulo de RBAC "Auth" de Christoffer Niska.
-
Mi idea es usar Amazon AWS para instalar las instancias pero estoy abierto a sugerencias.
-
El código debe ser único para hacer más eficiente el deploy de nuevas funcionalidades. Entiendo que esto puede hacerse de manera ágil con Docker o tecnologías similares pero no tengo experiencia en ellas.
Entiendo que es un poco confuso pero tal vez el gráfico que adjunto traiga un poco de claridad.
Espero enormemente que me puedan ayudar ya que no tengo idea de cómo implementar esta infraestructura.
Gracias!