|
[ biljana.66 @ 10.07.2008. 09:03 ] @
| Cao svim na forumu. Prvo da vas pozdravim jer mi je ovo i prva poruka koju vam pisem. :)
Moj problem je sledeci:
Radim neki program u VB6, programu pristupam upisivanjem korisnickog imena i sifre iz baze podataka.
Sada bi htjela da napravim u bazi da svaki korisnik ima neka ogranicenja, ali ne znam kako to da isprojektujem.
Sto se tice ogranicenja zamislila sam ovako:
Imam MDI formu - MDIMain, 5 Obicni formi, frmPregled, frmKorisnici, frmZaposleni, frmObavjestenje, frmPregledLogovanja, u zavisnosti koja je forma u njima imam dugmad - cmdDodaj, cmdDopuni, cmdIzbrisi.
E ovako kako da uradim tabelu, ili vise tabela u kojim omogucujem:
Korisnik npr. Marko Maric moze otvoriti frmPregled i u njoj moze Koristiti cmdDopuni, tako i za sve ostale forme.
Nadam se da sam bila barem malo jasna.
Moj pozdrav svima, pomozite ako mozete. Hvala. |
[ Trtko @ 10.07.2008. 09:39 ] @
Pozdrav i tebi biljana.
Ja bi to riješio ovako
Dodao bi još jedno polje u tablicu korisnika , tamo gdje ti je šifra
polje bi se zvalo recimo nivo_korisnik = numerik
i sad bi svakom korisniku dodala nivo pristupa podacima
npr
1= sva prava nad podacima
2 = ispravak,pregled
3 = pregled
itd ....
Deklarirala public varijablu P_nivo
kod citanja tablice bi izjednačila
P_nivo=nivo_korisnik
i sad bi morala dodat na tipke malo koda
recimo na tipki brisanje na on_klik
if P_nivo>1 then
msgbox "Nemate dozvolu brisanja"
Exit sub ' ili exit function
endif
Moj prijedlog bi to bio ...
Pozdrav
[ Scelle @ 10.07.2008. 16:24 ] @
I ja isto uvijek u tblKorisnici imam i polje GRUPA (obicno su to tri nivoa: User, SuperUser, Administrator) i u zavisnosti od njegove vrijednosti dodijelim odredjena prava korisnicima.
Ako ti korisnici nisu bas napredni, mozes da sakrijes odredjenu dugmad na formi u zavisnosti od grupe kojoj trenutni korisnik pripada. Naravno, pod uslovom da te komande nema u drugim menijima. Na primjer, ako grupa User nema pravo brisanja, njima neces ni prikazati dugme za brisanje (ovo cesto primenjujem).
Napravim funkciju koja mi vraca grupu (naravno, moze da prodje i globalna prom.) trenutno ulogovanog korisnika i koristim nesto ovako:
select case (Grupa()){
case "User": btnDodaj.Visible=false; btnBrisi.Visible=false.....
case "SuperUser": btnDodaj.Visible=true;.........
case "Administrator":................}
Ne znam odakle mi ova semnatika, ali bitan je princip. :) A princip je jasan.
Naravno, treba napomenuti da je Trtkov predlog mnogo sigurniji, u smislu da ja ne znam nacin da se zaobidje ogranicenje postavljeno direktno na tabelu. Ali, ja sam rijetko imao potrebe za takvim ogranicenjima. A gledajuci opis tvoje aplikacije, rekao bih da i nije bas sigurnosno-kriticna. :)
Pozdrav...
[ domaci_a_nas @ 10.07.2008. 21:09 ] @
Trle, jel' si sad odgovorio na temu il' mi se opet pričinjavaš ?
Evo šta ja mislim. U tabeli napravi polje AccessLevels (NivoiPristupa po naški). Popuni ga recimo sa brojevima 1010101. Zatim u toj mdiMain napravi array dugmića Dugme(1), (2).... i tako dalje, pošto su u pitanju VB6 forme. Onda ti "samo" treba sledeći kod : Code: Dim I As Byte
For I = 1 To Ubound(Dugme) ' - ako ne može ovako onda nek ide For I = 1 To 6 ili koliko već dugmića imaš
Dugme(I).Enabled = Mid(AccessLevel, I, 1) = "1"
Next I
Tako ćeš onemogućiti korisnika da stisne tačno određeno dugme koje otvara običan form, ili vrši neku drugu funkciju. Eto, imaš više varijanti, al' svaki ciga svoga konja hvali, meni ovo moje deluje najfleksibilnije 
[ Scelle @ 10.07.2008. 22:19 ] @
Fleksibilno svakako jeste i ideja je odlicna, ali sa povecanjem broja kontrola povecava se kolicina informacija koju moras upamtiti - a to ljudi ne vole. Sto manje napora, a sto vise odradjenog posla - to je korisnicka mantra. I OK je dok ona "administrira" aplikaciju, ali sta kad "preda stafetu" nekom ko nema toliko iskustva? Sta da kaze? "Znas, ovdje upises 10011..."? :) Ili, ako ima vise formi na kojima treba da kontrolise prava? Za svaku formu posebno polje u tabeli? Ili to ili napraviti takav sablon da svaka forma aplikacije ima isti broj btn kontrola sa istim funkcijama, sto je prilicno... Nerealno.
Ja ipak mislim da su 3-4 predefinisana korisnicka nivoa sasvim dovoljna, i da nema potrebe za tolikim stepenom kontrole.
Pozdrav!
EDIT: Evo dijela koda iz jedne moje aplikacije (u Access-u), koji zabranjuje ili dozvoljava odredjene akcije u zavisnosti od grupe kojoj korisnik pripada. Kod se odradjuje na OnOpen event forme:
Code: Gru = grupa()
If Gru = "Administrator" Or Gru = "Power User" Then
Me.AllowDeletions = True
Me.AllowEdits = True
Me.AllowAdditions = True
Else
Me.AllowDeletions = False
Me.AllowEdits = False
Me.AllowAdditions = False
End If
[ biljana.66 @ 11.07.2008. 07:51 ] @
E ovako procitala sam sve sta ste napisali a u medjuvremenu sam napravila jedan primjer i izgleda ovako uradila sam 3 tabele, tblKorisnici, tblOdobrenja, tblKorisnickaOdobrenja.
tblKorisnici:
-RedniBroj
-ImeiPrezime
-KorisnickoIme
-Lozinka
-AdminStatus
tblOdobrenja
-Odobrenje
tblKorisnickaOdobrenja
IDKorisnik
IDOdobrenje
Povezala sam tabele ovako:
tblKorisnici.RedniBroj sa tblKorisnickaOdobrenja.IDkorisnik i tblOdobrenja.Odobrenja sa tblKorisnickaOdobrenja.IDOdobrenja.
U tabeli tblOdobrenja ja unesem podatke tipa: Pregled Otpremnica, Dodaj Otpremnica, Storniraj Otpremnica ........ itako za sve ostalo, e onda u programu prilikom kreiranja Korisnika uz polja AdminStatus imam 2 opcije Administrator, Klijent e sada mogu mi neki klijenti raditi razlicite operacije i preglede npr. ako jedan moze da radi sa Otpremnicama drugi ne zato drugi nesto drugo radi, i pomocu toga da izaberem sta ce jedan a sta drugi ne moze mi se to uraditi da postavim AdminStatus mpr. Administrator, Klijent, SuperAdministrator, zato sto sve zavisi sta odaberem da svako radi.
Onda u VB pisem kod:
Code:
Prilikom logovanja podaci iz tabele tblKorisnickaOdobrenja upisuju mi se u konstante i onda radim provjeru:
npr. prilikom otvaranja forme, a tako ide i za sve ostalo:
If sAdministrator.sOtvoriOtpremnicu = cOtvoriOtpremnicu Then
With frmOtpremnica
.IDOtpremnica = sOtpremnicaNalog
.Show
End with
Else
MsgBox "Pristup Vam nije odobren!", vbInformation
End If
Mozete mi reci dali je ovo korektno i kako se pokazuje po Vasem misljenju???
Pozdrav
[ Scelle @ 12.07.2008. 00:25 ] @
U sustini, najbolje je ono sto ti najbolje znas da uradis. :) Mene barem, uvijek takva rjesenja zadovolje...
Ja sam misljenja da visoko kriticne aplikacije treba stititi onim sto nudi Access. To je prilicno sigurno i pruza maksimalnu kontrolu uz relativno malo rada. U ovom primjeru, konkretno, kada imas mnogo korisnika sa razlicitim pravima, ja bih se bez razmisljanja odlucio za Access-ov security.
Manje kriticne aplikacije (kakve se obicno i prave u Access-u) po mom skromnom iskustvu, opet kazem, ne zahtijevaju vise od 4 nivoa pristupa - u vrh glave. A time se lako moze manipulisati i iz koda.
Pozdrav...
[ Trtko @ 13.07.2008. 20:21 ] @
Još da se nadovežem, aplikaciju na koju se prijavljuje više korisnika
a potrebno je zbog nekih kontorla, još upisujem u polje i šifru korisnika
tako da se zna tko je kad nešto mijenjao ili dodavao.
A koristim i dva nivoa pristupa na istoj aplikaciji
N - nabava može raditi zahtjevnice, upite i narudžbe
N , 1 - nivo , može ispravljati , brisati sve zahtjevnice , i odobravati
N, 1 - ima pristup i do izrade narudžbenica i upita ??
I, 1 - informatika, samo može izradjivat zahtjevnice i odobravati ih , naravno i preglede
itd...
tako da u tablici lozinke imam i polja iz kojeg je odjela, i koji nivo pristupa ima korisnik
15 korisnika koristi tu aplikaciju za nabavi i dosta dobro šljaka.
e sad , po tvojoj potrebi ti si sama smisli način pristupa, ja ovo trabunjam onako sam za sebe
valjda zbog apstinencije pivske
pozdrav svima
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|