Accesso selettivo al database  Risolto!

FileMaker è un database relazionale. Vediamo come...

Moderatore: Moderatori

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Accesso selettivo al database

Messaggio da mario.masneri » mercoledì 26 ottobre 2016, 10:47

Buongiorno a tutti e grazie in anticipo per l'attenzione che vorrete concedermi.
Premetto che conosco FileMaker da appena un paio di mesi e, recentemente, assieme ad un cliente, sto modificando un database da lui creato affinché l'accesso degli utenti ai singoli record venga limitato in base ad una discriminante (codice numerico PE).

Ogni utente si logga sul database tramite user e password creati ad hoc (il db è hostato su di un server pubblicato tramite FileMaker Server 15).
Il database è formato da due tabelle: una, "Contatti", contenente i clienti aziendali e l'altra, "Accesso", dove per ogni PE sono associati i vari produttori e le province di appartenenza. Il codice PE è presente anche nella tabella "Contatti".

Sto cercando di fare in modo che ogni utente che si logghi sul database possa visionare e modificare solo i record della tabella "Contatti" relativi al proprio PE.
Ho impostato una relazione tra i due campi PE di entrambe le tabelle e creato un utente di test con privilegi personalizzati (in visualizzazione, in cui la condizione è PE = codice PE dell'utente, il resto dei permessi è full).
Se questa condizione la applico alla tabella "Contatti" mi mostra solo i record corrispondenti ma con tutti i campi impossibili da visionare con la scritta <<Nessun accesso>> (inoltre, se da menu strumenti seleziono "Mostra tutto", mi mostra comunque tutti i record, sempre con i campi non visibili); se la condizione la applico alla tabella "Accesso" non sortisce alcun effetto.

Mi rendo conto che sicuramente mi stia perdendo in un bicchier d'acqua, ma essendo un neofita sto andando per tentativi non avendo trovato ancora nulla di specifico a riguardo.

Buona giornata a tutti.

Avatar utente
fabio.beri
Messaggi: 1958
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: Accesso selettivo al database

Messaggio da fabio.beri » mercoledì 26 ottobre 2016, 11:20

Buongiorno. Diciamo che per essere un neofita, vuoi fare qualcosa di impegnativo.

Comunque ti sintetizzo il percorso da fare:

1. Crea una tabella utenti nel tuo sistema con almeno due campi insieme (username e questo codice numerico PE)
2. Fai uno script di login iniziale con un trigger all'apertura della finestra
3. Nello script, dopo che l'utente si è loggato, fai andare FileMaker nella tabella utenti e vai a leggere questo codice numerico PE, dopodiché te lo trasporti dentro un globale
4. Nei permessi di questa tabella contatti, crea un set di privilegi con privilegi personalizzati dove nel calcolo della visualizzazione dei records, inserirai un calcolo di questo tipo: CONTATTI::codice_numerico_PE = CODICE_NUMERICO_PE_GLOBALE (quello dove hai inserito il codice PE dell'utente)

In questo modo FileMaker ti filtrerà solo i record dell'utente corretto. Quindi non vedrai i record con "nessun accesso", bensi vedrai solo quelli accessibili.

Buon lavoro.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database

Messaggio da mario.masneri » mercoledì 26 ottobre 2016, 12:05

Buongiorno Fabio,
gentilissimo, grazie mille.

Inizio a lavorarci e sarà mia premura aggiornare il thread sulla prosecuzione, a presto e buona giornata.

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database

Messaggio da mario.masneri » giovedì 27 ottobre 2016, 12:28

Eccomi, allora (e scusate gli strafalcioni che leggerete), ho proceduto come segue usando un utente di test TEST001 e relativo PE 000001:

- nella tabella originaria "Accesso_PE", quella che contiene tutti i nomi degli utenti ed i relativi codici PE (formato testo), ho aggiunto per ognuno anche il nome utente utilizzato per loggarsi in FileMaker
- non essendo pratico di trigger, ho creato un pulsante di test sulla barra principale del record visualizzato al quale ho collegato uno script in cui faccio una verifica di prova con uno specifico nome utente, nella fattispecie:

If [Get (NomeUtente) = "TEST001"]
Imposta campo [Accesso_PE::PE_Globale]; "000001"]
End If
Dove PE_Globale è anch'esso un campo di testo

- Nel set di privilegi per l'utente TEST001 ho specificato nelle visualizzazioni l'operazione Contatti::PE = Accesso_PE::PE_GLOBALE

Dovrei essere vicino al risultato, ma ancora mi manca la chiave di volta.

Avatar utente
fabio.beri
Messaggi: 1958
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: Accesso selettivo al database

Messaggio da fabio.beri » giovedì 27 ottobre 2016, 16:14

Bravo! e quindi ? non ce lo dai un riscontro ? l'utente TEST001 vede solo i suoi records?

Intanto che ci spieghi se funziona oppure no, ti chiedo:

Il campo PE_GLOBALE oltre ad essere un campo di testo è un campo di tipo globale ? Perché altrimenti non funziona...
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database

Messaggio da mario.masneri » giovedì 27 ottobre 2016, 16:57

Si, scusami, errore mio per non aver riletto bene :roll:
Dicevo che dovrei essere vicino perché non ci sarei mai arrivato da solo ad inserire i controlli che mi hai suggerito, ma ancora mi mostra sia tutti i record di tutti gli utenti, e tutti con i campi con <<Nessun accesso>>.
Confermo che il campo PE_GLOBALE l'ho impostato come tipo globale. Sto facendo altri test ma ancora non ne sono uscito.

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database

Messaggio da mario.masneri » giovedì 27 ottobre 2016, 17:23

Probabilmente sto omettendo qualcosa io che normalmente sarebbe scontato.
Nei set di privilegi di visualizzazione ho indicato soltanto l'operazione Contatti::PE = Accesso_PE::PE_GLOBALE, presumo che come fatto per Get (NomeUtente) debba includerla in una If affinché, in caso di match, visualizzi i record interessati.
Il problema è che, in caso avessi ragione, non riesco a trovare la funzione per visualizzarli. E qui si vede pesantemente la mia niubbaggine...

Avatar utente
fabio.beri
Messaggi: 1958
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: Accesso selettivo al database

Messaggio da fabio.beri » giovedì 27 ottobre 2016, 17:26

Avevo due minuti, quindi ti ho buttato giù un esempio.

Scaricalo e aprilo premendo shift oppure alt (se sei con pc win oppure mac) e autenticati con "admin" e senza password per modificarlo
mentre per provarlo fai solamento un doppio clic e aprilo senza mettere utenti.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database

Messaggio da mario.masneri » giovedì 27 ottobre 2016, 17:33

Cavolaccio, sei troppo gentile, pensavo di poterci arrivare con semplici suggerimenti e logica, grazie mille. :shock:
Non voglio sfruttare così pesantemente la disponibilità degli utenti forum anche perché, se tutto va bene, spero di poter diventare un contributore anch'io.
Sto uscendo dal cliente, stasera lo scarico e lo provo. Ovviamente vi aggiorno sul prosieguo.

mario.masneri
Messaggi: 7
Iscritto il: mercoledì 26 ottobre 2016, 10:05

Re: Accesso selettivo al database  Risolto!

Messaggio da mario.masneri » venerdì 28 ottobre 2016, 11:08

Ho appena finito di integrarlo nel database del cliente e funziona egregiamente.
Non ci sarei mai arrivato all'utilizzo di "Passa al modo Trova" e "Esegui la ricerca" non conoscendoli, ora sto approfondendo.
Nel frattempo sto approfondendo anche i trigger, ed ora sto lavorando per automatizzare la cosa, ma ormai è tutto in discesa, grazie ancora. :)

Bloccato