Newsgroup: it.comp.appl.access
Titolo: autorizzazioni

Buon giorno a tutti,
ho un problema che nonostante tutte le ricerche fatte non riesco a
risolvere.
Ho un aplicazione in access 2003 che gestisce un inventario di
magazzino. Mi è stato richiesto di disegnare una nuova form per poter,
in caso di errori, modificare alcuni parametri degli articoli in esso
registrati: fin qui nessun problema. Mi è stato richiesto però che, al
momento del salvataggiodei dati, l'utente che ha provveduto alla
modifica riceva una mashera pop up dove è richiesta l'introduzione
dello username e password di un supervisore che autorizzi la modifica
con il salvataggio, nel record dell'articolo, dello username del
supervisore e della data dell'autorizzazione. Ho creato la mashera pop
up con un combo con i nomi dei supervisori a un text box dove inserire
la password; nell' evento "On load" della mashera popolo il
combo(SupervisorName) con i nomi dei supervisori facendo un loop sul
System. Visto che Microsoft è molto avara di informazioni in questo
campo e non ho trovato il modo di recuperare le password dei
supervisori per controllare se quella inserita nel text box fosse
giusta, nell'evento "after update" del text box SupervisorPwd ho
scritto la seguene istruzione:
DBEngine.Workspaces(0).Users(me.SupervisorName).NewPassword
me.SupervisorPwd, meSupervisorPwd.
ma questa soluzione non funziona se ho fatto il log in come utente
normale (quello che avverrà nella realtà). Facendo invece log in come
amministratore ho scoperto che tale codice mi cambia le password
dell'utente selezionato nel combo SupervisorName anche se la password
inserita non è corretta.
Potete darmi una mano?
Grazie in anticipo

 ha scritto nel messaggio 
news:1194258053....@v3g2000hsg.googlegroups.com...

DBEngine.Workspaces(0).Users(me.SupervisorName).NewPassword
me.SupervisorPwd, meSupervisorPwd.

Dunque non capisco da che punto vuoi partire però ci possono essere varie 
strade:
1- Ti crei un file system.mdw e obblighi l'utente a fare il log,
    a seconda del tipo di utente autorizzerai o meno certe operazioni
    creandoti opportunamente una tabella con le autorizzazioni. 
(consigliato)
2- ti crei una tabella con utenti e password
    sull'evento before_update apri la maschera popup e fai il controllo se 
OK esegui l'istruzione
    altrimenti fai eseguire il comandi acCmdUndo o fai si che la maschera 
attenda il parametro corretto...
Ciao
-- 
Roberto da Parma

 Roberto da Parma
Grazie Roberto,
ho già un system dove sono definiti i seguenti gruppi di utenti:
Admins, Directors,Supervisors,Users.
Le procedure di sicurezza dell'azienda non prevedono che un utente
normale possa modificare dati senza l'autorizzazione di uno dei
Supervisors o cancellarli senza l'autorizzazione di uno dei Directors.
Questo è il motivo per cui, nella mashera dove l'utente può modificare
i dati e al momento di salvarli, pensavo di aggiunger un maschera pop
up con l'username e la password del supervisor.
Voglio precisare che gli utenti Supervisors e gli utenti Directors non
fanno Data Entry dalle loro macchine (hanno solo i diritti in lettura)
ma si limitano a concedere solo le autorizzazioni lasciando agli
utenti normali l'onere di operare con l'applicazione.
Il mio problema, quindi, è quello di verificare che la password del
Supervisor corrisponda a quella registarta nel System dopodichè
autorizzare l'utente al cambio record.
Saluti

 ha scritto nel messaggio 
news:1194268439....@v3g2000hsg.googlegroups.com...



In questo modo però aggrovigli un pò le cose...
Nel senso che...se hai fatto le cose a modo, un utente non potrà mai 
modificare i dati e non si può avere dei loggin multipli.
Quindi o disconnetti/riconnetti l'utente o abiliti l'utente ad un certo tipo 
di operazioni.
Quindi l'utente tutt'al più potrà sempre modificare es. una det. tabella 
previo però inserimento di una password...(supervisor), questo perchè se in 
una routine hai specificato che un utente non può modificare i dati, subito 
dopo non gli puoi permettere di modificarli.
In ogni caso per sapere l'user lo ricavi sempre con la funzione 
CurrentUser() per la password devi creare il WS con una cosa del tipo
Dim Ws As Workspace
Dim CUser As User
Dim Pwd As String
Set Ws = DBEngine.CreateWorkspace("", NomeUser, Pwd)
Set CUser = Ws.Users(NomeUser)
[Forms]![tuamaschera]![tuacasella] = CUser.Password
Ws.Close


 - Mostra testo tra virgolette -
Grazie ancora Roberto,
per quanto riguarda i permessi nel file system, gli utenti del gruppo
Users possono fare tutto sui records. Le maschere di input, invece,
hanno le proprietà "Allow deletion" e "Allow Edits" settate su NO e
solo "Allow Addition" è settata su SI. Quando ricevono
l'autorizzazione dai Supervisor e/o Directors le proprietà vengono
settate su SI.
Il codice che mi hai gentilmente passato non funziona perchè va in
errore su CUser.Password (Uso invalido della proprietà)
Saluti
Manlio