Potrei usare qualche aiuto per creare un piano di attacco per un progetto su cui sto lavorando.Soluzione multi-tenancy Python/Django
Immaginate che il sito sia destinato a un gruppo che supervisiona gli uffici vendite regionali, distribuiti in tutto il mondo. Lo scopo di questo progetto è di consentire ai superutenti di creare un nuovo sito secondario specifico per ogni ufficio, a un ritmo rapido: i siti vengono aggiunti su base frequente. I sottositi dell'ufficio devono essere interamente contenuti con gli utenti "admin" specifici per tale sito secondario e devono essere CMS user-friendly. Un superutente dovrebbe essere in grado di intervenire e gestire tutti questi sotto-siti dell'ufficio.
Oltre all'istanza del sito secondario dell'ufficio autonomo, è inoltre necessario che ciascun sito secondario gestisca contatti, lead, ecc. E lo memorizzi in un'area centrale per i superutenti.
Ho fatto alcuni siti con Django, ma mai nulla multi-tenant. Vorrei suggerimenti per le tecnologie da utilizzare o tutorial/documentazione che potrebbero essere utili.
Requisiti:
- Ogni sotto-sito utilizza la stessa fonte (modelli, JS, funzioni disponibili, ecc), ma può essere modificato in modo da riflettere il contenuto personalizzato che rispetti le mascherine.
- Sottodomini assegnati (con un'opzione di utilizzo di un dominio completo) per sito secondario, configurati all'interno del progetto, non in un file di impostazioni hardcoded.
- Controlli di accesso utente specifici del sito secondario, oltre ai superutenti che possono accedere a tutti i siti secondari.
- La capacità di fornire un CMS "indipendente" per ogni sito secondario. Ad esempio, un amministratore di sottositi vede solo il loro contenuto. La mia preferenza per questo progetto sarebbe django-cms, ma sono aperto a suggerimenti.
- Supporto per le app che raccolgono i dati da tutti i siti secondari, ma limitano gli "amministratori" del sottosuolo alla sola visualizzazione dei loro record in quell'app.
Considerando quanto sopra, quale approccio consiglieresti? Sono aperto a riconsiderare le tecnologie, ma mi piacerebbe restare con Python.
Grazie per una rapida risposta! Ho esaminato gli schemi del django-tenant, ma l'unica cosa su cui sono rimasto bloccato è che non sembra offrire alcun aiuto sul lato dell'author delle cose (di cui non ho molta esperienza). Sarebbe difficile creare un ruolo o un gruppo che potrebbe essere limitato a specifici sotto-siti? – kotyy
Se si intende un gruppo di utenti o un ruolo che renderebbe possibile agli utenti in questo gruppo/ruolo accedere ai siti secondari definiti, sarà necessario rendere i modelli di 'SiteUser' condivisi su tutti gli schemi (ad esempio' public'), che conterrebbe, per ogni schema consentito, l'id del modello utente all'interno dello schema. Altrimenti, potresti semplicemente condividere il modello 'Utente' e gestire l'autenticazione in un altro back-end di autenticazione middleware/personalizzato. –
Ci sono rischi per la sicurezza con gli schemi di django-tenant? Un utente può visualizzare i dati al di fuori del suo schema? – Greg