Avatar billede wiborg Nybegynder
28. januar 2002 - 13:39 Der er 6 kommentarer og
2 løsninger

Jeg gi'r op...

Nu har jeg simpelthen tæsket rundt i jeg ved ikke, hvor lang tid for at få løst det her problem. Nu er jeg kommet dertil, hvor jeg bare stirrer mig mere og mere blind på det. Problemet er:
I en database har jeg to forms, lad os for nemhedens skyld kalde dem A og B.
Jeg har nogle brugere, der skal kunne redigere/oprette og slette både A og B-dokumenter, og jeg har nogle brugere, der kun må oprette/redigere og slette B-dokumenter. De skal dog alle kunne læse A-dokumenter.
Jeg troede at løsningen var fundet, men nu viser det sig, at sidstnævnte brugere ikke kan redigere de dokumenter, der tidligere har oprettet...
Jeg har forsøgt med roller, ændringer i ACL og jeg ved snart ikke hvad...
Nogen gode ideer ???
På forhånd tak...
Avatar billede yeager Nybegynder
28. januar 2002 - 13:52 #1
Hvordan kan det være at roller ikke virker..? Hvad hvis du nu lavede et skjult felt på hver form. Dette felt tager værdi der relaterer til brugerrollen. Så laver du en test mod dette felt (@IsMember og @UserRoles. Jeg vil tror at dette vil slå igennem på tidligere oprettede docs da feltet ligger i formen.
Op med Humøret !-)
MvH
Avatar billede cbkc. Nybegynder
28. januar 2002 - 17:51 #2
Ideen med roller er rigtig god:
Opret en rolle til Gruppe1 og en rolle til Gruppe2. Alle dokumenter(A) skal så indeholde rollen til Gruppe1, og B skal endvidere indeholde rollen til Gruppe2. Rollerne placeres så i forfatterfelter, vistnok.
Har selv lavet noget ligner lidt, blot med kombination af brugernavn og bruger rolle.
Bare klø på.
Mvh Cbkc.
Avatar billede roed Nybegynder
29. januar 2002 - 08:48 #3
Jeg vil foreslå også at afkrydse rollerne i adgangskontrollen for hver form under "Sikkerhed". Her kan du jo styre hvilken rolle som skal kunne oprette og hvem som skal læse den pågældende form.

/Roed.
Avatar billede cdelicht Nybegynder
30. januar 2002 - 14:11 #4
Roller forhindrer ikke i at kunne slette dokumentet.
Avatar billede cbkc. Nybegynder
30. januar 2002 - 14:54 #5
Mht. at kunne slette dokumenter, kan man lave et script i Querydocumentdelete, sådean lidt af la:

Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim col As notesdocumentcollection
    Dim doc As notesdocument, doc1 As notesdocument
    Dim view As NotesView
    Dim Acces As String   
    Dim user As String
    Dim AdgangFor As String
   
   
    'Først skal vi vide hvem der forsøger at slette.
    user = session.UserName
    'db sættes til aktuelle database.
    Set db = session.CurrentDatabase
    'col (af typen documentcollection) bliver sat til det/de dokumenter der er markeret til sletning
    Set col=source.documents
    'doc sættes til det første af dokumenterne i col. I while-løkken loopes over de resterende dokumenter i col.
    Set doc=col.getfirstdocument
    'I nedenstående While løkke, sikres at kun hvis user står på adgangslisten, kan der slettes.
    While Not doc Is Nothing
          If doc.form(0) = "Formularnavn" Then
              'Her havner vi kun hvis det er et dokumnet af typen 
                'formularnavn.
              'I For løkken testes om user er et af navnene i
                'adgangslisten i dokumentet.                   
              For i = 0 To Ubound(doc.adgang)         
                    acces =  doc.adgang(i) 
                    'AdgangFor = AdgangFor  & acces  & "; "
                    If  Instr(user, acces) > 0 Then 
                        continue = True
                        'Hvis det er tilfældet, er sletning ok, og der
                        'springes til næste dokument markeret
                        'til sletning               
                        Goto spring
                    End If
              Next
              'Hvis user ikke stod i adgangslisten, når vi hertil - og
              'ellers ikke.         
              Msgbox "Du har ikke rettigheder til at slette dokumentet: " & doc.institutionsnavn(0),0 + 48, "Ouerydocumentdelette"                     
              continue = False             
              Goto spring
          End If
spring:         
      'doc sættes til det næste dokument i col
          Set doc=col.getnextdocument(doc)
    Wend 

Evt. kan man erstatte username fra adgangslisten, med navn i forfatter felt eller lignende.
Avatar billede cdelicht Nybegynder
30. januar 2002 - 14:58 #6
Alternativ løsning:
1) Tildel en rolle til dem der må mere end læse A dokumenter.
2) For at undgå man editering af dokumentet efter det er åbnet for læsning:
I design på formen intaster du følgende under eventen 'QueryModeChange':

    Dim V As Variant
   
    If Continue Then
        V=Evaluate(|@IsMember("[DinRolle]"; @UserRoles)|)
        If V(0)=0 Then Messagebox("Desværre, du kan ikke editere dokumentet")
        continue = False
    End If

3) For at undgå man editering af dokumentet direkte fra et view:
I design på formen intaster du følgende under eventen 'Querymode':

    Dim V As Variant
    With Source.Document
        If Mode=1 Then
            V=Evaluate(|@IsMember("[DinRolle]"; @UserRoles)|)
            If V(0)=0 Then Messagebox("Desværre, du kan ikke editere dokumentet")
            continue = False
        End If
    End With


4) For at undgå sletning af dokumentet:
I database scriptet under eventen 'Querydocumentdelete'skriver du:

    Dim V As Variant
    If Continue Then
        V=Evaluate(|@IsMember("[DinRolle]"; @UserRoles)|)
        If V(0)=0 Then Messagebox("Desværre, du kan ikke slette dokumentet")
        continue = False
    End If
Avatar billede cdelicht Nybegynder
30. januar 2002 - 15:03 #7
Hov, jeg glemte koden for test af dokument type :-)

I 3 og 4 skal der derfor indsættes følgende IF sætning
3) Dim V As Variant
    With Source.Document
      If Source.form(0) = "Formularnavn" Then
        If Mode=1 Then
            V=Evaluate(|@IsMember("[DinRolle]"; @UserRoles)|)
            If V(0)=0 Then Messagebox("Desværre, du kan ikke editere dokumentet")
            continue = False
        End If
      End if
    End With

4)Dim V As Variant
      If Source.form(0) = "Formularnavn" Then
        V=Evaluate(|@IsMember("[DinRolle]"; @UserRoles)|)
        If V(0)=0 Then Messagebox("Desværre, du kan ikke slette dokumentet")
        continue = False
    End If
Avatar billede wiborg Nybegynder
31. januar 2002 - 09:27 #8
Tusind tak for hjælpen til Jer alle...
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
Computerworld tilbyder specialiserede kurser i database-management

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