04. marts 2004 - 12:48Der er
15 kommentarer og 2 løsninger
Brugerrettigheder m.v. i CMS system
Jeg har et CMS system som jeg gerne vil videreudvikle lidt på, men er løbet ind i nogle overvejelser som jeg håber der er nogle der vil være behjælpelige med at kaste lys over.
1. Som systemet er i øjeblikket, så er det kun muligt for administratoren at være på administrationssiderne. Jeg vil gerne have lavet det således, at man kunne oprette flere brugere som hver især har adgang til at rette/redigerer/slette sider. Det skal være muligt for administratoren at tildele disse rettigheder for hver enkelt bruger til hver enkelt side, men da der hele tiden bliver tilføjet nye sider kan jeg ikke rigtig overskue hvordan jeg skal bygge databasen op ?
2. Når nu punkt 1 er på plads, så skal det være sådan, at når en bruger redigerer en side, så skal der være lukket af så andre ikke kan redigerer samtidigt. lige netop dette kan jeg godt selv overskue, databasen skal blot opdateres når en bruger redigerer en side, men hvordan sikrer jeg mig, at denne bruger nu også logger rigtigt af således at databasen opdateres igen og andre kan redigerer ? Et eksempel kunne være, at en redaktør pludselig mister strømmen eller netforbindelsen og så vil den pågældende side jo være låst for andre ....
Jeg sætter 200 point på højkant, ikke for komplette løsninger, men mere for en dialog/ideér til hvordan ovenstående kan løses.
Håber ikke spørgsmålene er alt for forvirrende ellers er i velkommen til at spørge løs.
svar på 2: Du kan ikke være sikker på at "siden" bliver logget rigtigt af...
Sådan som jeg plejer at lave det er ved hjælp af en redigeringslog logID | sideID | datoklokkeslet | status | brugerID Så hvis en side har status åben men det er en time siden den blev sat til åben, så ved jeg at det må være en bruger som ikke har "lukket/gemt" siden ordentligt
Ved hjælp af brugerID kan du også se om det er den samme bruger som prøver at redigere. Hvis det er den samme bruger kan du være sikker på at siden ikke er åben/låst Hvis det ikke er samme bruger kan du også sige "siden er låst af bruger: Søren klokken 12:45" etc
Når en bruger redigere en side skal du gøre ham opmærksom på at han skal trykke gem eller fortryd så du kan sætte status til "lukket"
En ting du kan kigge på er onbeforeunload (javascript) Den bruger jeg med stor succes :-)
1. Jeg ville lave to tabeller til. UserEditPage og UserDelPage. heri sætter man et userid og pageid hvis man har tilledelse til at ændre/slette en side. Så skal du ikke ændre på allerede eksisterende tabeller.
En administrator skal selvfølgelig altid have rettighederne så han behøver ikke så i tabellerne.
Undskyld mit sene svar, men eksperten har desværre ikke oplyst mig om at der var kommet nogle besvarelser:
Christian >> ja det kan du have ret i, det var en måde at gøre det på, kan du ikke uddybe lidt mere hvad det javascript (onbeforeunload) gør og evt. hvordan det bruges, javascript er mere eller mindre sort snak for mig ?
fennec >> Det vil være helt optimalt hvis jeg ikke skal ændre i eksisterende tabeller, men jeg tror ikke jeg er helt med hvordan jeg skal bygge de nye tabeller op, der bliver jo hele tiden tilføjet nye sider og så disse skal vel også lægges ind i brugertabellerne, men hvordan ?
På den side hvor du opretter/rediger sider skal man også administrere brugerrettigheder. F.eks. to select bokse, hvor man kan klikke brugere fra/til. For at undgå at man glemmer at give nogen rettigheder, skal alle have fuld tilgang nå en side oprettes, også fjerner man dem som ikke skal have adgang.
Hvis der er mange brugere kunne man inddele dem i grupper, også tildele rettigheder på grupperne i stedet for brugere. Da det sikkert ofte er de samme personer, der har rettighederne til siderne, kunne det være smart at kunne oprette en default indstilling i stedet for at alle har fuld rettighed ved oprettelse af nye sider.
Det jeg så har lidt i tankerne er, at hvis en bruger har adgang til at rette i f.eks. side med sideid nr. 1,5,8,13 så smides disse tal i retadgang og det samme med sletadgang og opretadgang.
Jeg ved så ikke om det er den rigtige måde at gøre det på og om det i det hele taget kan lade sig gøre og slet ikke hvordan man gør det, det er sikkert noget med noget arrays eller lign.
Når adminministratoren så vælger egenskaber for en bruger, så får han listet en checkboks for side der er i sideid og hvis dette sideid nr. indgår i retadgang for den enkelte bruger, så skal checkboksen være vinget af. Administratoren skal så kunne vinge yderligere bokse af og gemme igen.
Jeg ved ikke om det lyder helt hen i skoven, men hvis det ikke gør, så er det nok det med hvordan jeg får lavet disse arrays og gemt dem igen der er problemet :o)
På den måde løber du i problemer når en side oprettes, fordi der ikke bliver knyttet rettigheder til. Ellers kan brugere kun rette/slette sider når admin har været brugerdatabasen igennem, hvilket han så skal gøre hver gange der bliver oprettet en ny side.
Giv et par brugere rettighed til at oprette og slette sider. Dette kunne sagtens sættes som en checkbox under brugeradmin. Når de oprette en side, kan de så vælge hvem der skal kunne ændre indholdet på siden.
Ja det kan jeg godt se ..... Hvad nu hvis man siger, at f.eks. sideid 3 er en "hovedside" og hvis en bruger har adgang til at redigerer denne side, så får vedkommende automatisk rettigheder til at slette/redigerer/oprette sider som tilhører denne hovedside, altså undersider ? Det kan godt være jeg er ude hvor jeg ikke rigtig kan "bunde", men jeg vil meget gerne have tilknyttet noget "rettighedshalløj" til mit CMS system, så alternativer og løsningsforslag er velkomne :o)
Det er faktisk ikke en helt dårlig ide at arve rettigheder. Man skal bare kunne give rettigheder på hele sitet, ellers kan man jo ikke oprette nye hovedsider.
Det vil heller ikke blive aktuelt i mit system idet hovedsider er en del af designet, derfor vil der "kun" blive tale om oprettelse af undersider. Spørgsmålet er så, ..... hvordan ? :o)
du laver bare de 3 tabeller (UserCreatePage, UserEditPage, UserDelPage). Når en side bliver oprette overfører du bare parent-sidens instillinger til den nye.
lukker og slukker, men vender helt sikkert tilbage ....
/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.