Limitare visualizzazione dati tabella in base ad utente loggato

di il
32 risposte

Limitare visualizzazione dati tabella in base ad utente loggato

Buongiorno a tutti,

ho creato un DB con una maschera di login, definendo i ruoli (admin e user).

Ora ho necessità di far in modo che ciascun utente, dopo il login, possa visualizzare con riferimento ad una tabella, i soli dati in cui nella prima cella della tabella compaia la sua username. 

Preciso quindi che nella tabella ci saranno righe di più utenti, ma lo specifico utente deve poter visualizzare solo i suoi dati. Inoltre, terminata la configurazione, il db sarà un db condiviso su elenchi sharepoint.

avete qualche idea su come procedere?

grazie mille a tutti

32 Risposte

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    Dopo che un utente si è autenticato cosa avviene? L'apertura di un'altra maschera o cosa?

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    Basta includere in una WHERE il campo dell'utente con il nome in input.

    Spero però che ci sarà un elenco utenti con id relazionato

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - joker88 ha scritto:


    ho creato un DB con una maschera di login, definendo i ruoli (admin e user).

    Che permessi ha admin e che permessi ha user?

    13/08/2023 - joker88 ha scritto:


    Ora ho necessità di far in modo che ciascun utente, dopo il login, possa visualizzare con riferimento ad una tabella, i soli dati in cui nella prima cella della tabella compaia la sua username. 

    In acccexcell?

    Premesso che excel ha tabelle con celle ed access ha tabelle con campi, di cosa parliamo esattamente?

    13/08/2023 - joker88 ha scritto:


    Preciso quindi che nella tabella ci saranno righe di più utenti, ma lo specifico utente deve poter visualizzare solo i suoi dati. Inoltre, terminata la configurazione, il db sarà un db condiviso su elenchi sharepoint.

    Preciso che access non ha righe ma record…

    13/08/2023 - joker88 ha scritto:


    avete qualche idea su come procedere?

    Se access:

    Alla login e password (verificando con una query se esiste l'username e la password è giusta) controlli i permessi e li annoti da qualche parte (variabile, label in un mainform con tanto di nome utente loggato, ecc…)

    All'apertura delle tabelle

    If (permesso) then sql= (tua sql con tuoi criteri)

    If not (permesso) then altra sql generica

    Resta da capire i permessi

    • Importi
    • Contabili
    • Sensibili
    • Creati da un utente specifico
    • Altro…

    Validazione:

     importi 1/0

    Contabili 1/0

    Ecc…

    Se il permesso è 11111 significa tutto abilitato

    Se 10011 significa importi, creati dall'utente e altro

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - Antony73 ha scritto:


    Dopo che un utente si è autenticato cosa avviene? L'apertura di un'altra maschera o cosa?

    esatto, apertura di un'altra maschera in cui io che sono admin vedo tutti i task assegnati ai diversi utenti, mentre l'user dovrebbe vedere le righe della tabella associate alla sua user.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - oregon ha scritto:


    Basta includere in una WHERE il campo dell'utente con il nome in input.

    Spero però che ci sarà un elenco utenti con id relazionato

    si, l'elenco utenti  è con id relazionato

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - sihsandrea ha scritto:


    13/08/2023 - joker88 ha scritto:

    ho creato un DB con una maschera di login, definendo i ruoli (admin e user).

    Che permessi ha admin e che permessi ha user?

    admin, al momento vede tutti  gli utenti e i relativi dati di login. user, al momento non vede nulla, sto ancora implementando ma mi sono fermato per questo dubbio riportato nel thread.

    13/08/2023 - joker88 ha scritto:


    Ora ho necessità di far in modo che ciascun utente, dopo il login, possa visualizzare con riferimento ad una tabella, i soli dati in cui nella prima cella della tabella compaia la sua username. 

    In acccexcell?

    Premesso che excel ha tabelle con celle ed access ha tabelle con campi, di cosa parliamo esattamente?

    No, solo access. errore mio nel fare riferimento a cella, abbiamo solo campi

    13/08/2023 - joker88 ha scritto:


    Preciso quindi che nella tabella ci saranno righe di più utenti, ma lo specifico utente deve poter visualizzare solo i suoi dati. Inoltre, terminata la configurazione, il db sarà un db condiviso su elenchi sharepoint.

    Preciso che access non ha righe ma record…

    si ok, come sopra. ho parlato genericamente di righe e celle in quanto è una tabella. riformulo: nella tabella ci saranno i record di tutti gli user e l'utente dovrà vedere solo quelli con il suo nominativo.

     

    13/08/2023 - joker88 ha scritto:


    avete qualche idea su come procedere?

    Se access:

    Alla login e password (verificando con una query se esiste l'username e la password è giusta) controlli i permessi e li annoti da qualche parte (variabile, label in un mainform con tanto di nome utente loggato, ecc…)

    All'apertura delle tabelle

    If (permesso) then sql= (tua sql con tuoi criteri)

    If not (permesso) then altra sql generica

    Resta da capire i permessi

    • Importi
    • Contabili
    • Sensibili
    • Creati da un utente specifico
    • Altro…

    Validazione:

     importi 1/0

    Contabili 1/0

    Ecc…

    Se il permesso è 11111 significa tutto abilitato

    Se 10011 significa importi, creati dall'utente e altro

    chiaro, unico dubbio, essendo alle prime armi, come procedo con “li annoti da qualche parte”?

    evidenziati in giallo i miei commenti.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - joker88 ha scritto:


    Ora ho necessità di far in modo che ciascun utente, dopo il login, possa visualizzare con riferimento ad una tabella, i soli dati in cui nella prima cella della tabella compaia la sua username. 

    Ciao,

    devi dimenticarti di avere una tabella, ma al suo posto avrai una query 

    • La Query dovrà essere filtrata per User loggato e in questo modo avrai solo i records di quell'User
      • La Query dovrà essere identica alla Tabella:
        • stessi nomi delle colonne
        • lo stesso numero di colonne
    • Quindi sostituire in ogni dove il richiamo alla Tabella con la tua Query 
      • Dovrai sostituire in tutti gli oggetti che hanno come riferimento il nome della tabella, con il nome della Query:
        • Nelle Form
        • Nei Report
        • Nelle Query
        • Nelle stringhe Sql nel Vba
        • etc etc etc 
    • Se la tabella è relazionata dovrai relazionare anche la Query nello stesso identico modo

    Se non hai particolari esigenze tra Indici e/o altro potrebbe essere sufficiente, ma non conoscendo il tuo progetto e la sua strutturazione rimane difficile garantire una soluzione e approcci corretti.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - joker88 ha scritto:


    esatto, apertura di un'altra maschera in cui io che sono admin vedo tutti i task assegnati ai diversi utenti, mentre l'user dovrebbe vedere le righe della tabella associate alla sua user.

    Allora il suggerimento ti è già stato dato da Oregon.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    Ricordiamoci che Access NON ha un sistema di Gestione Utenti, quindi tutto giusto ma serve implementarlo, e non lo darei così per scontato…!

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    14/08/2023 - @Alex ha scritto:


    Ricordiamoci che Access NON ha un sistema di Gestione Utenti, quindi tutto giusto ma serve implementarlo, e non lo darei così per scontato…!

    ed anche facendo un lavoro di fino, avendo accesso al database al 99% le tabelle con i dati sono sempre raggiungibili e visibili da chiunque abbia un minimo di conoscenza di access.

    A meno che non si usi un qualche sistema di crittografia dei dati. 

    Sbaglio?
    E' un aspetto che non ho mai approfondito, se non per far comparire certi menù al posto di altri, quindi vado a memoria di letture fatte in passato.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    13/08/2023 - joker88 ha scritto:


    si ok, come sopra. ho parlato genericamente di righe e celle in quanto è una tabella. riformulo: nella tabella ci saranno i record di tutti gli user e l'utente dovrà vedere solo quelli con il suo nominativo.

    Avrai:

    Utenti

    Idutente pk

    Username

    Password

    Al form login se l'username e la password coincidono memorizzi l'idutente su una variabile globale (tuavariabileutente).

    Ad ogni form devi accedere alle tabelle in visualizzazione tramite query where idutente=tuavariabileutente

    Per l'insert dei vari record delle varie tabelle devi inserire oltre l'idtabella l'idutente=tuavariabileutente (l'utente loggato).

    Devi usare un form per la view ed uno per l'insert/edit.

    La view tramite query, la insert/edit tramite tabella sincronizzata alla query.

    Ovviamente stampi solo quello che vedi, e se vedi solo i record dell'utente pippo potrai operare solo su record di pippo

    Per admin, basta solo un controllo se tuavariabileutente=admin ignora l'idutente altrimenti selezione per idutente.

    Occhio ai dati comuni, quelli che possono essere usati indistintamente da tutti gli utenti.

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    Immagino che ogni inserimento del Record debba essere memorizzato anche l'USER ma come dicevo la cosa deve essere pensata in fase di costruzione, perchè non si può lasciare all'utente l'onere di DIGITARE in fase di inserimento, serve pertanto strutturare la gestione Utenti in modo che le Maschere di INSERIMENTO abbiano come DefaultUSer nel campo USer i dati ambiente recuperati dai dati di LOGIN.

    A quel punto allora si risulta semplice effettuare quanto indicato da Oregon da subito… che è la soluzione, ma l'infrastruttura va creata a monte.

    Ad esempio serve creare una Funzione che restituisca lo USER, recuperandolo da una variabile Ambiente, in questo modo la si può inserire direttamente nella Query… quindi serve costruire un Modulo con Una funzione Public che restituisca lo user…

    Option Compare Database
    Option Explicit
    
    Private pActualUser As Long ' se lo user è codificato con una PK Counter, altrimenti sarà String
    
    Public Function fActualUser(Optional pUser) As Long
        If Not IsMissing(User) Then pActualUser=pUser
        fActualUser=pActualUser 
    End Function

    In questo modo, semplificato, la funzione può essere usata sia per la Scrittura dello User , che per la Lettura.

    SELECT * FROM Tabella WHERE IdUSer=fActualUser()

    O meglio ancora istruendo una Query Parametrica… al cui Parameter si passa il valore:

    PARAMETERS [User] Long
    SELECT * FROM Tabella WHERE IdUSer=[User]

    Da usare così:

    https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/parameters-declaration-microsoft-access-sql

    Ricordo che un Rs può essere associato ad una Form o a qualsiasi oggetto DataBound, come List/Combo…

    etc… etc…

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    14/08/2023 - fratac ha scritto:


    14/08/2023 - @Alex ha scritto:


    Ricordiamoci che Access NON ha un sistema di Gestione Utenti, quindi tutto giusto ma serve implementarlo, e non lo darei così per scontato…!

    ed anche facendo un lavoro di fino, avendo accesso al database al 99% le tabelle con i dati sono sempre raggiungibili e visibili da chiunque abbia un minimo di conoscenza di access.

    A meno che non si usi un qualche sistema di crittografia dei dati. 

    Sbaglio?
    E' un aspetto che non ho mai approfondito, se non per far comparire certi menù al posto di altri, quindi vado a memoria di letture fatte in passato.

    Il minimo una protezione tabelle con password.

    Credo che più che salvaguardare i dati serva non mischiarli tra utenti rendendoli nascosti 

  • Re: Limitare visualizzazione dati tabella in base ad utente loggato

    Molti utenti “fai da te” creano Elenchi in Excel o Applicativi di comodo in Access con dati “sensibili” senza nemmeno porsi il problema della privacy o che il DB debba essere Criptato in certi casi, se non ricordo male SEMPRE nel caso delle PA, pensando poi che essendo ad uso personale o di pochi dell'ufficio… sia tutto semplice e fattibile… NOOOooooo.

    Queste cose spesso accadono nelle PA o in luoghi affini…

Devi accedere o registrarti per scrivere nel forum
32 risposte