08. august 2003 - 12:50Der er
8 kommentarer og 1 løsning
Skjul dokumenter for andre end ejer
Jeg har en database, hvor min kolleger kan indtaste oplysninger om dem selv - herunder også oplysninger som ikke er relevante for alle andre.
Jeg skal derfor have lavet et view hvor kollegerne kun kan se deres egne oplysninger, samt et hvor nogle få, ledende personer kan få adgang til oplysningerne.
Er der nogen der har en god ide til hvordan jeg styrer viewet hvori personalet kun kan se deres egne dokumenter ???
Sikkerhed af denne type styres med Læser/Skriver- felter. Tilføj et felt af typen "Author". Navngiv det gerne med prefix 'Ax', f.eks. 'AxOwner' eller 'AxUser' eller 'AxEmployee'. Sæt værdi til brugernes fulde Notesnavn, Tilføj et felt af typen "Author". Navngiv det gerne med prefix 'Ax', f.eks. 'AxAdmin'. Sæt værdien til Notes administratorgruppen eller til en rolle, f.eks. '[SystemAdmin]' og tilføj evt. også 'LocalDomainServers'. Tilføj et felt af typen "Reader". Navngiv det gerne med prefix 'Rx'. Navngiv til f.eks. 'RxChefer'. Sæt værdien til enten et gruppenavn eller en rolle, f.eks. [Chefer] eller [Boss].
Nu vil dokumenterne være redigerbare for serverene (replikering!), Notesadministratorerne (rettelse af fejl!) og brugeren selv. Cheferne kan kun læse dokumenterne, men ikke rette i dem.
Grunden til at jeg prefixer alle sikkerhedsfelter er at det så er nemmere at få overblik over et dokuments sikkerhedsstruktur ved blot at se efter felter der starter med Ax eller Rx.
Nu er det jo ved at blive en vane, at jeg tilføjer noget til Jörg's glimrende forklaringer - så det vil jeg gøre igen ;-)
Husk på, at hvis der er flere author eller reader felter på et dokument så er det "summen" (den konkatenerede liste) der gælder.
Husk også at pre-ND6 kan et dokument, hvis reader felt er sat helt "ude i skoven" ikke læses af nogen.
Det er derfor altid en god ide når man benytter reader felter at have et felt kaldet eksempelvis 'alwaysRead' og sætte en computed-when-composed værdi her, som du med sikkerhed kender og altid anvender, eksempelvis navnet på admin-gruppen i dit Directory.
-> pr0gm4n: Jo, det er da vanedannende :-) Vedr. dit "allwaysRead"-felt, så er det det jeg vil gøre med 'AxAdmin', hvor feltet tager hensyn både til administratorer og servere. Ved at henvise til en rolle kan administratorerne anvende databasen "normalt" og tilføje sig selv til rollen hvis der er gået noget galt. Og husk at prefixe felterne.
Ja da. Det er derfor at feltet skal indeholde brugerens "FullName". Hvor det kommer fra må din infrastuktur angive (m.a.o. hvilken type system). Det lyder næsten som et personale system. Jeg laver dem normalt sådan at der findes et "offentligt" dokument, som alle kan se (nogle kan rette). På dette dokument vedligeholdes feltet FullName, som evt. kan koblet sammen med jeres Notes adressebogens felt @Subset(FullName; 1). De sikre dokumenter laver jeg gerne som response-dokumenter og smider nogle Rx-felter på. Gerne med FullName som ComputedWhenComposed-værdi. Hvis du vil så kan du på hoveddokumentet angive navnet på chefen. På responsedokumentet angives chefens navn i et Rx-eller Ax-felt (afhængig af om chefen må rette eller ej). På den måde kan chefen se relevante dokumenter for "sin" afdeling. Meget praktisk ved godkendelser etc. Jeg håber det giver lidt inspiration.
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.