Sono a conoscenza di Discourse Patreon. Anche se la mia domanda riguarda Patreon, il “plugin Patreon” non è la soluzione che sto cercando.
Esiste un modo elegante per estendere una classe Ruby e specificare, tramite codice, una lista di controllo degli accessi (ACL)?
Ad esempio: voglio garantire che solo i membri Patreon possano pubblicare in un determinato forum; che solo persone con un certo livello di fiducia possano rispondere, ecc. … ma non voglio che questo sia gestito tramite caselle di spunta in una GUI. Voglio poter estendere una classe in Ruby e, tramite codice, specificare la lista di controllo degli accessi.
È qualcosa di facile o difficile da realizzare in Discourse?
Nei plugin puoi fare qualsiasi cosa tu voglia.
Non ti consiglio di gestire le liste di controllo degli accessi (ACL) nel codice. Certo, puoi modificare il comportamento e le regole, ma il controllo degli accessi dovrebbe essere il più trasparente e intuitivo possibile per l’amministratore, no? Inoltre, ci saranno momenti in cui dovrai apportare modifiche urgenti. Non vorrai dipendere da una nuova versione del codice per farlo!
Cerca di comprendere appieno il modello esistente e vedi se puoi ottenere ciò di cui hai bisogno senza modifiche al codice. La sicurezza è un elemento molto importante ma delicato, e mentre sfrutti il framework esistente, il team di Discourse ti copre le spalle. Se modifichi le cose, corri rischi maggiori e sei solo.
Tieni anche presente che le modifiche del tuo plugin devono essere robuste rispetto all’evoluzione del core. Le sovrascritture devono essere scritte in modo che sia più probabile che continuino a funzionare mentre il codice originale evolve. Questo è un equilibrio delicato e rappresenta un onere di manutenzione. Non poter aggiornare la tua istanza perché il tuo plugin si romperebbe è di per sé un rischio per la sicurezza.
Alla fine, i plugin sono particolarmente adatti per modifiche più superficiali e innocue, ma applicarli al livello di sicurezza dovrebbe essere fatto solo dopo un’attenta considerazione. Ci sono però eccezioni, come i plugin OAuth che funzionano con funzionalità della piattaforma che ti consentono di integrare in modo sicuro nuovi provider.
Detto questo, buona fortuna!
1 Mi Piace