Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    MySql - aiuto struttura tabelle per permessi utente

    Ciao a tutti,

    vorrei scrivere da me (sicuramente ce ne sono già pronte..) la struttura delle tabelle per gestire i permessi utente su delle form.

    per ogni singola form presente sul mio applicativo (e caricata su tabella) vorrei assegnare dei permessi.

    Siccome ho abbastanza form e abbastanza utenti, avevo pensato di poter assegnare i permessi direttamente all'utente e/o al gruppo/i di appartenenza.

    Se non utilizzassi i gruppi, la query per ricavare il relativo permesso per una data form è semplice semplice.

    Ma nel caso che un utente appartenga ad uno o più gruppi, devo per forza fare 2 query (prima una select dei permessi utente, poi una select dei permessi gruppo)

    c'è un modo per verificare i permessi utente/gruppo con una sola query (cambiando la struttura che ho indicato sotto ..) ?!?

    di seguito le tabelle che ho pensato (con indicati i campi minimi..)

    [utenti]
    id
    username
    pwd
    ...

    [form]
    id
    form
    descrizione
    ...

    [permessi]
    id
    permesso
    descrizione
    ...

    [utenti_form_permessi]
    id
    idUtente
    idForm
    idPermesso

    [gruppi]
    id
    gruppo
    descrizione
    ...

    [utenti_gruppi]
    id
    idUtente
    idGruppo

    [gruppi_form_permessi]
    id
    idGruppo
    idForm
    idPermesso

    Grazie a tutti per le idee e per l'aiuto!
    aquatimer2000

  2. #2
    a prima vista, se un utente appartiene obbligatoriamente ad almenu un gruppo, la tabella [utenti_form_permessi] non serve

  3. #3
    per la seconda cosa, se metti in join utenti / gruppi / gruppi_form_permessi / form fai tutto con una sola query

    attento ai conflitti! (un utente appartiene a due gruppi, uno che ha accesso e uno no
    )

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    a prima vista, se un utente appartiene obbligatoriamente ad almenu un gruppo, la tabella [utenti_form_permessi] non serve
    giusto, ok, ad ogni utente darò un gruppo di default.

    quindi, struttura aggiornata delle tabelle:

    codice:
    [utenti]
    id
    username
    pwd
    ...
    
    [form]
    id
    form
    descrizione
    ...
    
    [permessi]
    id
    permesso
    descrizione
    ...
    
    [gruppi]
    id
    gruppo
    descrizione
    ...
    
    [utenti_gruppi]
    id
    idUtente
    idGruppo
    
    [gruppi_form_permessi]
    id
    idGruppo
    idForm
    idPermesso
    Per i conflitti sulla JOIN avevo pensato di risolvere ricavando solo una riga, quella con l'id permesso più alto.

    Ora, "se non mi faccio sangue" voglio ragionare sulle autorizzazioni su singolo record.

    Esempio:
    permesso 1: il gruppo può solo leggere gli articoli (quindi al richiamo della form di modifica avrà accesso negato);
    permesso 2: il gruppo può inserire articoli, e modificare solo gli articoli che ha creato;
    permesso 3: il gruppo può inserire articoli, e modificare gli articoli di tutti gli utenti;

    poi avrò l'eccezione, del tipo, che all'utente che appartiene al gruppo con permesso 2) do la possibilità di modificare solo determinati articoli di cui non è "creatore"

    mo ci ragiono su e posto l'aggiornamento della tabella, sempre se ne vengo fuori!
    Ultima modifica di aquatimer2000; 01-08-2019 a 12:05
    aquatimer2000

  5. #5
    ok, questa è la mia tabella articoli:

    [articoli]
    id
    articolo
    idUtenteCreate
    idUtenteEdit

    ora, la verifica dei permessi, fino al post sopra, la facevo in base al gruppo/form e cioè:

    [gruppi_form_permessi]
    id
    idGruppo
    idForm
    idPermesso

    partendo dal presupposto che gli articoli sono parecchi (circa 30mila record) e che le eccezioni saranno poche.. quali delle 2 soluzioni è più conveniente:

    soluzione a) al posto di "gruppi_form_permessi", verifico i permessi con questa nuova tabella:
    [gruppi_articoli_permessi]
    id
    idGruppo
    idArticolo
    idPermesso


    ma appunto, avrei ogni volta delle SELECT su 30mila record..

    oppure

    soluzione b) prima ricavo il permesso dalla tabella "gruppi_form_permessi" (le form saranno 50 in tutto .. più o meno) poi, valuto se ci sono eccezioni nella nuova tabella "utenti_articoli_permessi" (che come detto in premessa, avrà pochissime righe..)

    chiedo venia, sono contorto !
    aquatimer2000

  6. #6
    domanda: hai una form dove vedi tutti e 30mila gli articoli?

  7. #7
    Quote Originariamente inviata da optime Visualizza il messaggio
    domanda: hai una form dove vedi tutti e 30mila gli articoli?
    non ho capito scusa..

    io ho una tabella articoli (oggetti .. sennò articoli sembrano quelli del blog..) .. ogni articoli .. ha molte opzioni, ogni opzione sta su una tabella apposita. oggetti opzioni > molti a molti


    l'utente può cercare su tutto il database, quindi può avere in risultato anche 30mila record ..

    a questo punto potrebbe: visualizzare gli oggetti e basta, oppure, crearne di nuovi e modificare solo i propri oggetti /opzioni, oppure crearne di nuovi e modificare sia i suoi che quelli degli altri.

    in casi particolari, l'utente che ha i permessi solo sui propri record, può avere accesso ad altri record specifici.
    aquatimer2000

  8. #8
    ti servono quindi tutte e due le tabelle: la *form per capire se in quella form (es:inserimento) ci puoi entrare o no, la *articoli per capire cosa puoi fare con l'articolo "x"
    per questa seconda, metti la *articoli in join con gli articoli nella select

  9. #9
    Quote Originariamente inviata da optime Visualizza il messaggio
    ti servono quindi tutte e due le tabelle: la *form per capire se in quella form (es:inserimento) ci puoi entrare o no
    questa parte l'ho capita


    Quote Originariamente inviata da optime Visualizza il messaggio
    la *articoli per capire cosa puoi fare con l'articolo "x"
    per questa seconda, metti la *articoli in join con gli articoli nella select
    questa non l'ho capita: *articoli in join con gli articoli nella select

    (grazie come sempre per il prezioso aiuto!)
    aquatimer2000

  10. #10
    per questa seconda, metti la *articoli in join con i permessi nella select

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.