05. maj 2003 - 13:50Der 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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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?
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
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 :-/
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 %>
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.
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.
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
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.
Du er garanteret ikke nær så glad som jeg er :o) Endnu engang tak for hjælpen.
/Goose
Synes godt om
Ny brugerNybegynder
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.