Avatar billede goose Nybegynder
05. maj 2003 - 13:50 Der er 18 kommentarer og
1 løsning

Brugere med forskellige rettigheder

Jeg er nu gået total kold i et lille projekt.
Jeg har et site hvor der kan oprettes brugere som så skal tildeles rettigheder til at rette i forskellige grupper.

Min tabel med grupper (TBL_grupper) ser således ud:
id - autonummer
gruppenavn - tekstfelt

èn enkelt bruger skal så af administratoren tildeles rettighed til at rette i f.eks. id 7, id 11 og id 25 i TBL_grupper.

Jeg har en ide om at jeg skal bruge sessions men er ikke sikker.

Der bliver hele tiden oprettet nye grupper.
Der bliver hele tiden oprettet nye brugere som hver især har adgang til forskellige grupper.

Hvordan skal jeg strukturere tabellen med brugere og sikre at den enkelte bruger må rette de steder rettighederne gælder ?

Det blev en længere "røverhistorie" men jeg håber det er godt nok formuleret, ellers sig til.

Jeg sætter 200 point på højkant da jeg mener spørgsmålet er til det.

/Goose
Avatar billede amd Nybegynder
05. maj 2003 - 14:03 #1
Jeg har lige lavet et forum, hvor der er en admin.
Hans rang er "Admin" og år man logger ind laves der sessions om brugernavn rang besvarede spgs osv. og hvis session("rang") = "Admin", a så kommer der en admin menu i bunden... Er det ik os bare noget i den stil du skal ha laveet?
Avatar billede dk_akj Nybegynder
05. maj 2003 - 14:05 #2
Du skal lave en tabel user_right_rel med 2 felter, gruppe (samme datatype som tbl_grupper.id) og userid (bruger id)

I den tabel kan du så f.eks have:
1  4
2  4
3  4
1  5

Bruger 4 har ret til at rette i gruppe 1, 2 og 3 mens bruger 5 kun må rette i gruppe 1.


På siden der skal "beskyttes" laver du noget som dette:

set sec_rs = conn.execute("select * from user_right_rel where userid = " &session("brugerid")& " and gruppe = " & request.querystring("gruppe"))
if not sec_rs.eof then
  'rettigheder ok.
else
  ' rettigheder ikke ok.
end if


//akj
Avatar billede dgivoni Nybegynder
05. maj 2003 - 14:06 #3
jeg vil foreslaa at du laver en ekstra tabel til at varetage relationen mellem grupper og brugere.

Dvs. du har tabellerne

TBL_brugere:
id, navn etc.

TBL_bruger_grupper:
id - autonummereret
brugerid
gruppeid

TBL_grupper
id, navn etc.
Avatar billede dgivoni Nybegynder
05. maj 2003 - 14:08 #4
ja, mit svar var den samme loesning som dk_akj (naaede ikke at se den)
Avatar billede goose Nybegynder
05. maj 2003 - 14:23 #5
dk_akj >>>> Ja du er inde på noget af det rigtige så vidt jeg lige kan se, men kan det nu også lade sig gøre med den databasestruktur når nu administratoren skal ændrer rettigheder for den enkelte bruger f.eks. med checkbokse, altså udtrække data for den enkelte bruger og gemme ændringerne igen ?
Jeg kan ikke lige gennemskue hvordan hulen jeg skal gøre det. Hvis grupperne altid var de samme, så kan jeg godt gøre det ved at oprette en kolonne til hver enkelt gruppe i tabellen med brugere og sætte dem til enten true eller false, men jeg kan sg* ikke gennemskue hvordan jeg skal sætte det op når nu grupperne er dynamiske :-/

/Goose
Avatar billede goose Nybegynder
05. maj 2003 - 14:23 #6
amd >>>> nej det er ikke det jeg vil frem til.

/Goose
Avatar billede dk_akj Nybegynder
05. maj 2003 - 14:24 #7
Grupperne har vel det samme id altid ??

//akj
Avatar billede goose Nybegynder
05. maj 2003 - 14:34 #8
dk_akj >>>> øhh ja ?!?

/Goose
Avatar billede dk_akj Nybegynder
05. maj 2003 - 14:59 #9
Her er et eks.

Idéen er at man vælger en bruger, submitter til side 2 hvor man vælger de rettigheder brugeren skal have, submitter til en side der opretter rækker i user_right_rel.

//akj

Oki, så skal du på din admin side lave noget som dette

' ********** start side1.asp *************

<form action="side2.asp" method="post" name="form1" id="form1">
<select name="user">
<%
set rs = conn.execute("select userid, username from users")

' lav liste med brugere
do while not rs.eof
    response.write "<option value=" & rs("userid") & ">" rs("username") "</option>"

loop
%>
</select>

<input type=submit>
</form>
' ********** slut side1.asp *************


' ********** start side2.asp *************

<form action="side3.asp" method="post" name="form1" id="form1">
<%
user = request.form("user")

response.write "<input type=hidden name=user value=" & user & ">"


set rs = conn.execute("select id from tbl_grupper")
do while not rs.eof
    ' check om bruger har rettighed allerede
    set ext_rs = conn.execute("select * from user_right_rel where user_id = " & user)
    if ext_rs.eof = true then
        checked = ""
    else
        checked = "CHECKED"
    end if
    ' lav checkboxe
    response.write "<input type=checkbox name=right_" & rs("id") & " value=1 " &checked& ">admin for gruppe " & rs("id") & "<br>"
loop
%>

<input type=submit>


' ********** slut side2.asp *************


' ********** start side3.asp *************

user = request.form("user")

conn.execute("delete from user_right_rel where user_id = " & user)

set rs = conn.execute("select id from tbl_grupper")
do while not rs.eof
    ret = request.form("right_" & rs(id))
    if ret = 1 then
        ' brugeren skal have rettigheden
        conn.execute("insert into user_right_rel (user_id,gruppe) values(" & user & "," & rs("id") & ")")
    end if
loop
%>


' ********** slut side3.asp *************
Avatar billede goose Nybegynder
05. maj 2003 - 15:15 #10
Jeg kigger lige lidt nærmere på dit forslag, det ser umiddelbart ok ud, men det bliver nok først senere i aften jeg får tid til at kigge på det.

/Goose
Avatar billede dk_akj Nybegynder
05. maj 2003 - 15:16 #11
Oki, du kan evt kontakte mig på MSN >> dk_akj@hotmail.com

//akj
Avatar billede goose Nybegynder
05. maj 2003 - 22:11 #12
Jeg opgiver simpelthen det her, nu har jeg snart prøvet alt, undtaget noget der virker.

Jeg har nu lavet en database med følgende indhold:

TBL_bruger:
brugerid
brugernavn

TBL_bruger_grupper:
id
brugerid
gruppeid

TBL_grupper:
gruppeid
gruppenavn

I tabellen TBL_bruger_grupper refereres der dels til brugerid i TBL_bruger og til gruppeid i TBL_grupper.

Er der én eller anden der kan give mig de vise sten, eller lede mig på rette vej ?!?

/Goose
Avatar billede dk_akj Nybegynder
05. maj 2003 - 22:41 #13
Hvad er problemmet mere præcist ??
Har du msn ??

//akj
Avatar billede goose Nybegynder
06. maj 2003 - 07:09 #14
Nej jeg har ikke MSN
Problemet er, at når jeg forsøger at udtrække hvad den enkelte bruger har rettigeheder til og den kommer til et punkt hvor brugeren ikke har rettigheder, altså hvor checkboksen ikke er afkrydset, så scriptet i baglås, og melder at EOF eller BOF er nået, hvilket jo selvfølgelig også er rigtigt, men så skulle den jo blot lade være med at afkrydse feltet og så ellers fortsætte sit loop.
Jeg skal på arbejde nu, men er tilbage sidst på dagen der hvis der skulle komme nogle forslag der jeg kan prøve af.

/Goose
Avatar billede goose Nybegynder
06. maj 2003 - 07:38 #15
Okay, nu lykkedes det mig alligevel at få den til at udtrække de rigtige data, nu skal jeg så blot have fundet ud af hvordan jeg får gemt evt. ændringer rigtigt.

/Goose
Avatar billede dk_akj Nybegynder
06. maj 2003 - 07:51 #16
Det er jo side3.asp der gemmer brugerens rettigheder.

' hent brugernavn fra forrige side
user = request.form("user")

' slet eksisterende rettigheder, dette er lettere end at skulle til at lave update
conn.execute("delete from user_right_rel where user_id = " & user)

' vælg alle grupper
set rs = conn.execute("select id from tbl_grupper")

' loop gennem grupper
do while not rs.eof

    ' se om der er kryds i checkbox
    ret = request.form("right_" & rs(id))
    if ret = 1 then
        ' brugeren skal have rettigheden
        conn.execute("insert into user_right_rel (user_id,gruppe) values(" & user & "," & rs("id") & ")")
    end if
loop


//akj
Avatar billede goose Nybegynder
06. maj 2003 - 08:22 #17
Smider du lige et svar, det ser ud til det kom til at virke, dit forslag var korrekt, det var blot mig der sad og lavede kage i det, en kombination af for lidt søvn og for meget arbejde :o(
Mange tak for hjælpen.

/Goose
Avatar billede dk_akj Nybegynder
06. maj 2003 - 08:28 #18
Jeg er glad for at kunne hjælpe :-)

//akj
Avatar billede goose Nybegynder
06. maj 2003 - 08:34 #19
Du er garanteret ikke nær så glad som jeg er :o)
Endnu engang tak for hjælpen.

/Goose
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester