Guide e tutorial pratici per joomla e le sue estensioni
Guide e tutorial pratici per joomla e le sue estensioni

Nel precedente tutorial abbiamo realizzato un form che salva i dati in una tabella del database, e creato una lista per gestire i record. Gestire i record vuol dire poterli cancellarli, editarli o inserirne di nuovi. Uno degli aspetti più importanti nella gestione dei dati è la solita questione: chi può fare cosa.

Stabilire i ruoli è importante al fine di progettare bene la nostra applicazione, quindi una delle cose che dovrò considerare e chi sarà ad inserire i dati, quale gruppo di persone, e quale gruppo potrà editarli. Immaginate gli operatori di una azienda sanitaria qualsiasi, tipo un pronto soccorso, questi all'arrivo di un paziente devono compilare dei form/cartelle cliniche descrivendone sintomi, cause, procedure mediche e medicinali somministrati, ma non potranno fare nessuna correzione una volta registrati questi dati.

Ci sarà poi un gruppo di operatori di livello più elevato che avrà i permessi per editare e correggere le cartelle cliniche con un meccanismo che possa tracciare chi ha modificato cosa.

Quindi capite che è di estrema importanza iniziare a progettare la nostra applicazione con un occhio alla questione permessi.

Per il form e per la lista trattati nello scorso articolo "creare un form con la sua lista di dati" , non sono state fatte molte considerazioni in quanto quell'esercizio ci serviva per capire come orientarci all'interno del CCK.

Adesso passiamo alle varie configurazioni per dare i permessi al gruppo o utente il quale potrà eseguire gli inserimenti, quale le correzioni e quale le eliminazioni. Un ulteriore variabile potrebbe essere quella di far editare/cancellare i record al proprietario di questi. Mi spiego: in un ipotetico gruppo potrebbero esserci degli utenti che svolgono un lavoro di "data-entry", potremmo decidere di far editare/correggere o eliminare i record solo all'utente che lo ha generato; come dire che ognuno può editare o eliminare solo i record che ha inserito.

In questo caso avremmo bisogno di un ulteriore campo chiamato "user_id" (che è la chiava secondaria collegata alla tabella users di joomla) dove in automatico verrebbe registrato l'id dell'utente che sta creando il record, potendo così distinguere quali gli utenti "owner" i proprietari. Questo eventualmente sarà oggetto di un prossimo articolo, per adesso continuiamo per la strada già intrapresa.

Portiamoci nel pannello di controllo di Fabrik e clicchiamo sul menù "LISTE" e successivamente sul nome della nostra lista (utenti corsi), nella colonna di sinistra clicchiamo su "ACCESS" ed impostiamo i permessi per chi potrà leggere i dati, chi potrà inserirli ed editarli e quelli per chi potrà eliminarli, quindi:

  • vedi liste: Public
  • vista record: Public
  • edita i record: registered
  • aggiungi righe: registered
  • elimina record: Super User
  • vuota i record: Super User
fabrik per joomla gestire i permessi 

 I gruppi scelti fanno parte del core di joomla, quindi in una situazione reale non andremo a dare i permessi di inserimento a qualsivoglia utente registrato, ma sarà più opportuno creare un apposito gruppo, magari seguendo questa guida.

Testando adesso nel front-end del sito, ci accorgeremo che richiamando il form, un messaggio di allert ci informa che: "Ci dispiace, ma non sei autorizzato ad aggiungere questo record" .

Mentre visualizzando la lista non visualizzeremo più i pulsanti per l'inserimento e per la modifica.

ADESSO LIMITIAMO LA VISUALIZZAZIONE e MODIFICA dei DATI al SOLO UTENTE PROPRIETARIO

Iniziamo con l'inserire un campo user_id scegliendo come tipo il plug-in user.

Nella Tabs Opzioni Configuriamolo in maniera che nei dati utente vi sia "ID", sarà possibile anche scegliere il nome dell'utente, il suo indirizzo email o il nik name. Per questa guida usate ID!

Per le altre configurazioni dovrete scegliere secondo la logica che vorrete dargli, quindi proseguite nella Tabs Opzioni con;

Aggiorna su modifica: Dovrebbe stare su NO se si tratta di una scheda personale, altrimenti ad ogni utente che ne modificherà il contenuto corrisponderà un id diverso. Comodo se vogliamo costruire un sistema di controllo di chi effettua le modifiche, il vecchio id verrà sostituito con il nuovo id dell'utente che effettua la modifica. Con qualche modifica sarà possibile costruire un sistema che tenga traccia di tutti gli utenti che hanno fatto le modifiche, memorizzando data, ora e modifica......ma questo esula da questa guida.

Utilizza profilo social: Valido solo se per il login l'utente usa il suo profilo. Joomla deve essere configurato per fare ciò.

Nella Tabs nascosto sceglieremo le seguenti impostazioni: Imposteremo nascosto su SI, altrimenti chi inserirà i dati si ritroverà una dropdown list con la possibilità di scegliere un utente tra gli utenti a cui dare la paternità dell'inserimento, non necessario nella nostra guida, ma è possibile che in altre situazioni serva.

Impostazioni per la visualizzazione delle liste o del dettaglio

Come abbiamo fatto sopra, adesso ci portiamoci nel pannello di controllo di Fabrik e clicchiamo sul menù "LISTE" e successivamente sul nome della nostra lista. Nella colonna di sinistra clicchiamo infine su "ACCESS" ed impostiamo i permessi, questa volta li imposteremo per fare in modo che questi dati possono essere visualizzati solo dall'utente proprietario ed al massimo da un amministratore con permessi di Super Users.

  • vedi liste: registered
  • vista record: registered
  • edita i record: Super Users
  • Oppure usa il campo: user_id
  • aggiungi righe: registered
  • elimina record: Super User
  • Oppure usa il campo: user_id
  • vuota i record: Super User

Infine ci porteremo nella gestione della nostra lista in Data >> Pre-filtro, dove definiremo i filtri di chi può fare cosa, nello specifico chi può vedere cosa.

Nell'esempio di seguito faremo in modo che i dati inseriti possa visualizzarli solo il proprietario ed un amministratore con permessi Super Users.

Nei pre filtri inserire i seguenti dati cliccando su nuovo:

  • Unione: WHERE
  • Campo: user_id(raw)
  • Condizione: EQUALS
  • Valore: {$my->id} comprensivo di parentesi graffe
  • Digita: Testo
  • Applica: Registered

Le impostazioni appena inserite faranno in modo che siano visibili solo i dati inseriti dall'utente proprietario.

I dati sottostanti serviranno per essere visualizzati e amministrati da un amministratore con permessi di Super User:

  • Unione: OR
  • Campo: user_id(raw)
  • Condizione: NOT EQUALS
  • Valore: 0
  • Digita: Testo
  • Applica: Super Users

Questo tutorial su fabrik termina qui, se avete dubbi postate sui commenti. Se volete potete offrirmi un caffè cliccando nel pulsante sottostante, oppure cliccate su uno dei banner pubblicitari.

offrimi un caffè

Commenti   

0 # paolocerbone 2017-02-16 01:36
Ciao e grazie per le dettagliate guide che mi hanno permesso di scegliere con sicurezza questo cck.
La mia necessità è di far visualizzare all'utente solo ciò che ha inserito lui e non tutte quelle degli altri utenti del gruppo.
Spero sia stato chiaro e soprattutto che sia possibile, mi date una mano a capire come fare?
Grazie in anticipo, Paolo.
0 # giusebos 2017-02-16 10:17
Citazione paolocerbone:
Ciao e grazie per le dettagliate guide che mi hanno permesso di scegliere con sicurezza questo cck.
La mia necessità è di far visualizzare all'utente solo ciò che ha inserito lui e non tutte quelle degli altri utenti del gruppo.
Spero sia stato chiaro e soprattutto che sia possibile, mi date una mano a capire come fare?
Grazie in anticipo, Paolo.


devi andare nella tua lista>>ACCESS e li imposti i permessi per visualizzare/modificare/aggiungere record.

Quindi nel tuo caso userai i due campi "oppure usa il campo" dove sceglierai l'id dell'utente, ma ricordati che dovrai avere quell'id fra i tuoi elementi e questo sarà collegato all'id degli utenti di joomla attraverso il plug in "internalid".
0 # paolocerbone 2017-02-20 11:27
Ciao,
grazie per la disponibilità, la procedura da te descritta mi permette di limitare la scrittura e l’eliminazione e non la visualizzazione della lista dei soli dati inseriti dal singolo utente che ha compilato…

Spero che tu riesca ad aiutarmi a capire meglio come fare, grazie.
0 # paolocerbone 2017-02-20 11:28
Ciao,
grazie per la disponibilità, ma la procedura da te descritta mi permette di limitare la scrittura e l’eliminazione e non la visualizzazione dei dati della lista inseriti dal singolo utente che ha compilato…

Spero che tu riesca ad aiutarmi a capire meglio come fare, grazie.
0 # pbjolly 2017-03-11 19:59
Salve
Volendo visualizzare solo i dati inseriti dal proprio utente e quindi quelli personali sul proprio account, come è possibile gestire la cosa ?
0 # giusebos 2017-03-11 20:30
Citazione pbjolly:
Salve
Volendo visualizzare solo i dati inseriti dal proprio utente e quindi quelli personali sul proprio account, come è possibile gestire la cosa ?


fai esattamente come c'è scritto nella guida, la chiave della questione è il campo è "user_id", così ognuno visualizzera i propri dati.
0 # danilo.confuorto 2017-06-06 15:35
Ciao, ho questa situazione
utente registrato compila domanda e vede solo le sue
utente operatore vede lista completa e visualizza / ma modifica solo lo stato delle domande
è possibile con Fabrik
0 # giusebos 2017-06-06 16:45
Citazione danilo.confuorto:
Ciao, ho questa situazione
utente registrato compila domanda e vede solo le sue
utente operatore vede lista completa e visualizza / ma modifica solo lo stato delle domande
è possibile con Fabrik

Si è possibile.
basta che guardi l'ultima immagine della guida, dove ci sono i livelli di accesso: inserisci il gruppo relativo e poi usa "oppure usa il campo" e scegli user_id
0 # danilo.confuorto 2017-06-09 11:55
Citazione giusebos:
Citazione danilo.confuorto:
Ciao, ho questa situazione
utente registrato compila domanda e vede solo le sue
utente operatore vede lista completa e visualizza / ma modifica solo lo stato delle domande
è possibile con Fabrik

Si è possibile.
basta che guardi l'ultima immagine della guida, dove ci sono i livelli di accesso: inserisci il gruppo relativo e poi usa "oppure usa il campo" e scegli user_id


Ciao, purtoppo non riesco, l'opzione vedi liste prevede solo la possibilità di inserire un gruppo ma non user_id, per cui se metto vedi liste su operatore gli utenti non le vedono ma se metto su utenti vedodono lista completa...
0 # giusebos 2017-06-09 15:29
Citazione danilo.confuorto:

Ciao, purtoppo non riesco, l'opzione vedi liste prevede solo la possibilità di inserire un gruppo ma non user_id, per cui se metto vedi liste su operatore gli utenti non le vedono ma se metto su utenti vedodono lista completa...

è necessario che la tabella specifica contenga il campo user_id.

Qui devi documentarti un pò su come funziuonano i database in generale, perchè non è una questione di fabrik....

se da una parte hai la tabella con gli utenti e dall'altra una tabella con dei dati, queste due tabelle andranno relazionate attaverso una chiave secondaria: quindi la primary key della tabella utenti dovrà essere collegata alla secondary key della tabella dei dati personali.
Per capirsi ti allego un immagine presa dal web che rappresenta ciò che voglio illustrarti pure se i nomi sono diversi.

nell'esempio dell'immagine la primary key viene considerata come la secondary key, ma in una costruzione più attenta dei campi della tabella, ogni tabelle deve avere una primary key che rappresenta il numero di record, poi a seconda delle necessità aggiungerei una secondary key per le relazioni.

nell'elesempio in foto un utente è relazionato ad una immagine, ma se ogni utente volesse associate più di una ummagine? la secondary key ci risolve la questione:

all'utente con primary key "62" saranno associati tutt le immagini che nella secondary key avranno il valore "62", poi ognuna delle varie immagini avra un numero di record (registrazione) differente.
Per lavorare con i vari CCK è necessario avere delle basi di progettazione di database
Ti consiglio l'ottimo corso sulla progettazione di database del Professor Camuso:

https://www.youtube.com/watch?v=FnkL4YdWAwE
0 # Fabioz 2018-01-08 18:59
Non ho ben capito il discorso dei permessi. Se ogni utente deve inserire e modfificare i propri dati e l'amministratore deve vedere, modificare ed eliminare i dati di tutti come si deve fare?
0 # giusebos 2018-01-08 19:17
Citazione Fabioz:
Non ho ben capito il discorso dei permessi. Se ogni utente deve inserire e modfificare i propri dati e l'amministratore deve vedere, modificare ed eliminare i dati di tutti come si deve fare?

Se ogni utente deve modificare solo i propri dati, guarda l'ultima immagine, alla voce "oppure usa il campo", li sceglierai user_id, quindi chi editerà potrà editare solo i suoi inserimenti.
0 # Fabioz 2018-01-08 22:35
IL campo user_id in "oppure usa il campo" non ci sta. Va aggiunto manualmente o con qualche plugin?
0 # giusebos 2018-01-09 13:54
Citazione Fabioz:
IL campo user_id in "oppure usa il campo" non ci sta. Va aggiunto manualmente o con qualche plugin?

Non ti trovi il campo solo perchè quando hai progettato la tua applicazione non hai preso in considerazione questo campo che è esistente e fa parte del core del database di joomla.
0 # Max170664 2018-01-17 17:28
Buonasera,
mi complimento prima di tutto per questo prodotto che apprezzo tantissimo e utilizzo gia da tempo.
Purtroppo nonostante le documentazioni reperite on line non riesco proprio a far visualizzare ad un utente connesso soltanto i suoi dati. Ho inserito nella tabella il campo user_id in cui effettivamente visualizzo l'id utente di joomla ma nulla.
Gli accessi su modifica e cancellazione riesco effettivamente a gestirli ma la solo visualizzazione non c'è verso. Una volta loggato, l'utente visualizza anche i record degli altri. Come detto modifica e cancellazione sono possibili solo sui record di cui lui è proprietario.
Spero veramente nell'aiuto di qualcuno.

Grazie
Massimiliano
0 # giusebos 2018-01-17 17:36
Citazione Max170664:
Buonasera,
mi complimento prima di tutto per questo prodotto che apprezzo tantissimo e utilizzo gia da tempo.
Purtroppo nonostante le documentazioni reperite on line non riesco proprio a far visualizzare ad un utente connesso soltanto i suoi dati. Ho inserito nella tabella il campo user_id in cui effettivamente visualizzo l'id utente di joomla ma nulla.
Gli accessi su modifica e cancellazione riesco effettivamente a gestirli ma la solo visualizzazione non c'è verso. Una volta loggato, l'utente visualizza anche i record degli altri. Come detto modifica e cancellazione sono possibili solo sui record di cui lui è proprietario.
Spero veramente nell'aiuto di qualcuno.

Grazie
Massimiliano


ok la connessione con la tabella user_id, ma poi hai impostato "oppure usa il campo" e qui scegli user_id.....

guardando l'ultima immagine della guida, come hai impostato i vari campi?
0 # Max170664 2018-01-18 10:42
I campi sono impostati come segue:
Vedi Liste e Vista Record = registered
Edita i Record = super users
Oppure usa il campo = user_id

Stessa cosa per aggiungi righe ed elimina record in cui il campo "usa il campo = user_id.

Una volta loggato l'utente vede tutto ma può modificare o cancellare solo i sui record.

grazie
0 # giusebos 2018-01-18 13:08
ho provveduto ad aggiornare la guida inserendo le istruzioni specifiche per far visualizzare ad ogni utente i propri inserimenti.

naturalmente questa rimane una base su cui lavorare in quanto esistono innumerevoli altre combinazioni per costruire sistemi specifici.
-1 # Max170664 2018-01-18 15:06
Grazie mille per la tua disponibilità e professionalità.
Funziona tutto !!!
Caffè assicurato !!!

Max
0 # vito 2018-06-14 21:36
Salve,
io ho un problema simile, gli utenti registrati utilizzano il modulo di fabrik per compilare dei verbali che potrà vedere solo chi lo ha compilato ed il super user. Il problema è che adesso l'utente che ha compilato il verbale non lo vede, mentre il super user sì.
Suggerimenti? Grazie.
Vito
0 # giusebos 2018-06-14 22:53
Citazione vito:
Salve,
io ho un problema simile, gli utenti registrati utilizzano il modulo di fabrik per compilare dei verbali che potrà vedere solo chi lo ha compilato ed il super user....


L'unica cosa che mi viene in mente è che forse hai saltato la fase della compilazione dei prefiltri con {$my->id}
0 # Macrazio 2018-10-18 12:14
Salve,
ho seguito il tutorial, ma, quando un utente registrato aggiunge un record, nel campo user_id (plugin user) ottengo un valore NULL e non l' ID dell'utente.
Suggerimenti?
Grazie e complimenti per il gran lavoro !

PS: ripeto perché avevo indicato una mail errata
0 # giusebos 2018-10-20 17:08
Citazione Macrazio:
Salve,
ho seguito il tutorial, ma, quando un utente registrato aggiunge un record, nel campo user_id (plugin user) ottengo un valore NULL e non l' ID dell'utente.
Suggerimenti?
Grazie e complimenti per il gran lavoro !

PS: ripeto perché avevo indicato una mail errata


Sicuro di non aver tralasciato qualche passaggio, dovrebbe funzionare visti anche i tanti riscontri positivi.
Spesso è nella parte finale che si tralascia qualcosa, tant'è che ho provveduto ad aggiungere istruzioni ed immagini scrivendo dei dettagli in più...ma questo oramai da diverso tempo.

Per pubblicare un commento devi registrarti