05. april 2006 - 00:06Der er
20 kommentarer og 1 løsning
Hjælp til større opgave ønskes
Jeg ved ikke, om det er en KÆMPEstor opgave, men jeg håber én af Jer har mod på at hjælpe mig :)
Jeg har lavet nogle sider, som:
1. Opretter en bruger med nogle få stamdata (createuser.asp) 2. Derefter redirectes der til en side, hvor brugerrettigheder tildeles (edituserrights.asp) 3. Derefter kan man se samtlige brugere (showallusers.asp) 4. Man kan gå ind på brugeren og ændre i rettighederne, og man kan slette og deaktivere brugeren (edituserrights.asp, samme som i 2)
Det er den helt basale måde at oprette brugere, se alle brugere, og redigere brugerrettigheder/slette/deaktivere brugere på. Så de enkelte funktioner til at oprette og administrere brugere på fungerer fint nok.
Nu skal det imidlertid kunne fungere på den måde, at en eller flere administratorer fra hver afdeling i virksomheden kun må kunne oprette og administrere brugere, som tilhører deres egen afdeling. Dvs administrator fra afd. B må kun kunne oprette brugere, som er ansat i afd. B osv. Han må overhovedet ikke kunne blande sig i, hvordan brugerne fra de andre afdelinger i virksomheden er sat op i systemet. At alle brugere skal kunne læse/skrive i fælles fora bagefter, er en anden sag. Men admin fra afd. A må ikke kunne redigere i andre brugerprofiler end dem, der er oprettet i Afd. A.
Nu må man jo ikke bede bestemte personer om at hjælpe (eagleeye kender ellers meget til denne side, jeg er ved at lave :o)), men jeg håber på noget hjælp.
Er der noget, der skal uddybes, eller kode, der skal vises, så råb højt.
PS: Det skal gerne kunne fungere på den måde, at det er afhængigt af admins rettigheder. Er han oprettet som admin for Afd. A, opretter han pr. automatik brugere, der er tilknyttet Afd. A. Han skal ikke have den mulighed at kunne vælge mellem flere afdelinger. Så han skal have tilknyttet en eller anden form for ID til sin profil .... kunne jeg tænke mig.
Formålet er, at der ikke forvirres eller at der leveres et system, som kan få admin til at klumre i det.
Grunden til, at det skal holdes adskilt på den måde er, at en bruger fra f.eks. Afd. A opretter en sag, som alle afdelinger har rettigheder til at se. En bruger fra Afd. B, eller måske Afd. E, tager imod sagen, færdigbehandler den, og sender den til sidst retur til brugeren fra Afd. A, som oprindeligt oprettede den. Og så skal alle kunne se hele forløbet fra oprettelse til afslutning. Men uanset hvad, skal administrator, som opretter brugere for sin egen afdeling, ikke kunne kludre rundt i brugere fra andre afdelinger. Hver administrator har ansvaret for sine egne brugere. Håber I forstår :)
Det er bare at slå admin instillinger op på siden. Dette bruger du når du oprette nye brugere:
[createuser.asp] set rs = conn.execute("select * from BrugerTabel where id="& session("loginID")) afdeling = rs("afdeling") conn.execute("insert into BrugerTabel(...,afdeling) values(...,"& afdeling &") ")
Dette tjekker du får når du rette oplysninger:
[edituserrights.asp] set rs = conn.execute("select * from BrugerTabel where id="& session("loginID")) afdeling = rs("afdeling") set rs = conn.execute("select * from BrugerTabel where afdeling="& afdeling &" and id="& retBrugerId) if rs.eof then response.write "brugeren er fra en anden afdeling, og du kan ikke ændre oplysninger" response.end end if
Hvis du har en table med alle brugere i skal den blot udvides med et felt til angivelse af afdeling. SQL særningerne skal herefter udvides så der tages højde for afdelingen. select * from brugere where Afdeling= (Administrators Afdeling) Administrators afdeling kan gemmes i en Session variable når han logger ind.
1. En opret-bruger-side, hvor en "over-administrator" opretter administrator-profiler, som opretter brugere og administrerer deres rettigheder.
"Over-administratoren" opretter administratorer for hver afdeling:
Administrator, som kan kan oprette brugere og administrere deres rettigheder i Afd. A Administrator, som kan kan oprette brugere og administrere deres rettigheder i Afd. B Administrator, som kan kan oprette brugere og administrere deres rettigheder i Afd. C Administrator, som kan kan oprette brugere og administrere deres rettigheder i Afd. D Administrator, som kan kan oprette brugere og administrere deres rettigheder i Afd. E
og så videre. Den side har jeg sådan set på plads.
Det næste, der skal laves, er vel i loginet? Her har jeg dolog.asp, som danner cookies til login (tjekker user/pwd, autologin, husk mig, husk mig ikke). Det er vel her, at det afgøres hvilken afdeling brugeren tilhører?
Du kan godt nøjes med at sætte en session variabel på login siden, som indeholder administratorens afdeling, men af sikkerheds mæssige årsager vil jeg anbefale at du laver tjekket på siderne alligevel. Der er nemlig altid en aller anden bruger, der lige skal prøve at pille ved url-parameterne, så du kan lige så godt tage hånd om det på forhånd :o)
Der er en hel del, som både udgør en slags stamdata på brugeren, samt de retiggheder, som brugeren skal have. Du får hele listen (jeg prøver at dele dem op i kategorier her, det er ikke gjort i DB):
Stamdata: (data med underscore omkring, er data, som brugeren selv er forpligtet til at holde ajour. Der er ikke underscore i navnene, det er kun for at give dig et indtryk)
Disse rettigheder er det meningen, at administratoren for den enkelte afdeling skal tildele brugerne for den pågældende afdeling. Nogen skal have rettigheder til at oprette, redigere og slette i alle og/eller egne informationer. Andre skal ikke. Men uanset hvad, skal administratoren for den pågældende afdeling ikke koncentrere sig om hvad der sker i de andre afdelinger. Han skal bare koncentrere sig om sit eget område. Derfor skal han ikke præsenteres for nogen valgmuligheder, der berører de andre afdelinger.
Alle afdelinger skal have adgang til nogle af de samme ting, som er fælles for alle, og vedrører alle. Andre ting vedrører måske kun enkelte afdelinger, og er uden interesse for de andre. Så derfor skal de andre afdelinger ikke belemres med (for dem) unødige adgange til uinteressante områder.
Det er ikke alt dette mit spørgsmål indebærer. Det er kun for at ridse op hvorfor jeg ønsker differencieret login.
Som jeg selv synes, så kan jeg se én formular til oprettelse af administratorer for de enkelte afdelinger. Og en anden formular, som administratorerne bruger til at oprette deres brugere med, og tildele dem deres rettigheder med.
Når det i databasen er bestemt hvilken afdeling brugeren tilhører, skal de områder og emner hives frem, som er beregnet til den pågældende afdeling og dens brugere.
Nogle af de områder er afdelingsbestemte. Det kunne f.eks. være udtræk af data, som de skal kunne håndtere i afd. A, men som er fuldstændig irrelevante for alle de andre afdelinger. Så er der ingen grund til, at de data bliver præsenteret for de andre afdelinger.
Andre områder kunne være noget fælles dokumentation, som er relevant for samtlige afdelinger; det skal alle jo så have adgang til. Jeg håber den overordnede idé er ridset godt op nu :)
Nu er det som sagt ikke meningen, at jeg skal have hjælp til alt dette her for de 200 point. Det er udelukkende for at ridse op hvor jeg vil hen med det her afdelingsbestemte login. Og når det kommer til stykket, er det garanteret ret simpelt - selv for mig :o) Men heg håber vi kan finde ud af noget brugbart, som jeg kan bygge videre på.
PS; Jeg må ud fra de rettigheder også kunne benytte en dynamisk menu?
BRUGERADMINISTRATION Opret bruger (createuser) Rediger brugerrettigheder (edituser) Deaktiver bruger (deactivate user)
Sådan kunne menuen se ud hos en bruger, som har de ovenstående rettigheder, men ikke rettighed til at slette andre brugere? Det er noget, jeg vil oprette et nyt spørgsmål til senere. Bare vi har det in mente :o)
Hvis du vil vide mere mht. hvilken type data der er i databasen, må du råbe højt. Men de ligger alle sammen i samme tabel. Alle rettighederne er af smallint (1), hvor 1 giver rettigheden, 0 giver ingen rettighed. Håber du forstår :o)
Ud fra det du har skrevet kan jeg ikke se om du har en Afd. tabel... Det skal du have: [Afdeling] id, navn 1, Afd 1 2, Afd 2 3, Kontor Øst ...
Det lader nemlig til at alle dine info på en eller anden måde er knyttet til afdeling. Du mangler også en "admin" kolonne på Stamdata, som afgøre om brugeren er administrator eller ej.
Jeg kan også se fordele i at lave en rettigheds tabel, hvor du indskriver alle rettigheder med id og navn (som ved Afdeling), så kan du lave en ekstra tabel som knyttet bruger sammen med rettigheder, og evt også som knytter Afdeling sammen med rettighed. Jeg forstår det nemlig som om at ikke alle rettigheder er aktuelle på div. afdelinger. "Kontor Øst" kan f.eks ikke bruge tips rettighederne til noget...
Ok, jeg har også tænkt på at dele det op nogenlunde som jeg har vist dig i 06/04-2006 21:19:24, men har været bange for at miste overblikket (er ikke så rutineret som du er :o))
Går det helt galt, har du så mod på at rette det til?
backendusersmail: mailID owner author recipient message sent unread folder
backendusersdept: deptID deptname
Jeg håber du kan se hvilke typer af data der er tale om, og hvad de skal bruges til. Ellers råber du op :)
backenduserrights drejer sig udelukkende, om der står 1 eller 0 recordsets. Står der 1, skal de have rettighed til det pågældende punkt. Står der 0, skal de selvfølgelig ikke have rettigheder til det :)
Du må meget undskylde at jeg ikke har været herinde, men jeg har åbentbart overset en mail fra E angående dette ?, også har jeg simpelthen glemt det...
Det skal du sq ikke være, jeg er glad for al den hjælp jeg har fået af dig. Og jeg håber du stadig har mod på det :o) Men jeg skal du lige have tid til at sætte spørgsmålet rigtigt op. Vi snakkes! :o)
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.