Avatar billede cbkc. Nybegynder
29. juni 2001 - 10:39 Der er 4 kommentarer og
1 løsning

Kopiering / overtagelse af adgangskontrolliste

Hej,
Når man har to databaser, og den ene skal overtage adgangskontrollisten fra den anden, således at ændringer i den anden automatisk overtages af den ene.
Det skal være to databaser, de kan ikke slåes sammen til en.
Min ide er at oprette en agent, der køre hver nat. Denne agent skal så kopiere ACL for anden database over til ene database.
Hvordan gøres det bedst, så de to ACL er helt ens efter agenten er kørt?
Er den en måde at \"indstille\" den ene database så det køre automatisk ?

Forslag og ideer modtages meget gerne. Forslag der løser problem får alle point.
Avatar billede roenving Novice
29. juni 2001 - 11:22 #1
Jeg kan ikke se anden løsning end den du (i princippet) selv foreslår:

Lav en Scheduled LotusScript-agent (i den ene database), som opretter lister af ACL-entries for begge databaser, itererer igennem først den ene, så den anden og så finder ud af om entries er ens, hvis de hedder det samme. Så skal du forholde dig til hvad du vil gøre hvis to entries har samme navn men er forskellige.

Det sværeste er at få alle properties med, det skal åbenbart hardcodes da Parent er en property så man desværre ikke kan checke om de er lig hinanden.

hth
jes

PS! Lister oprettes med:
dim entry1 List as NotesACLEntry
og den enkelte opretter du så med
entry1(ACLentry.name) = ACLentry.
JR
Avatar billede ragnvaldur Nybegynder
02. august 2001 - 10:08 #2
Hej, jeg går ud fra at du ikke har fået løst dit problem endnu.

Jeg har fundet nedenstående på notes.net(http://www.notes.net/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/193eb2a22c995e7685256a0f005d5d05!OpenDocument).

Lav en scheduleret agent med følgende kode:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim create As String
Dim pAgent As String
Dim folder As String
Dim del As String
Dim level As Integer
Dim newEntry As NotesACLEntry
Dim newAcl As NotesACL


Set db = session.CurrentDatabase
Dim db2 As New NotesDatabase(\"\",\"ACLTestThing.nsf\")

Set acl = db.ACL
Set newAcl = db2.ACL
Set entry = acl.GetFirstEntry

Forall nn In newAcl.Roles
Call newAcl.DeleteRole( nn)
Call newAcl.Save
End Forall


Forall rr In acl.Roles
Call newAcl.AddRole( rr )
Call newAcl.Save
End Forall

Dim yourName As String
yourName = session.CommonUserName

Do Until entry Is Nothing
level = entry.LEVEL
Set newEntry = newAcl.CreateACLEntry( entry.Name, level )
Dim roles As Variant
roles = entry.Roles

If Not (roles(0)=\"\") Then

Forall yy In entry.Roles
Call newEntry.EnableRole( yy )
Call newAcl.Save
End Forall
End If

create = entry.CanCreateDocuments
newEntry.CanCreateDocuments = create
del = entry.CanDeleteDocuments
newEntry.CanCreateDocuments = del
pAgent =entry.CANCREATEPERSONALAGENT
newEntry.CANCREATEPERSONALAGENT = pAgent
folder = entry.CANCREATEPERSONALFOLDER
newEntry.CANCREATEPERSONALFOLDER = folder
Call newAcl.Save
Set entry = acl.GetNextEntry(entry)
Loop

Mvh
ragnvaldur
Avatar billede mikethebike Nybegynder
02. august 2001 - 12:10 #3
Den nemme:

Lav en eller flere grupper i din adressebog, f.eks:
  DB_reader
  DB_author
  DB_manager
læg dem ind på ACL\'en i din database, een gang for alle.
Når du skal tilføje eller ændre i rettighederne, gør du det i grupperne, og ikke direkte på databasen.
Avatar billede roenving Novice
02. august 2001 - 12:19 #4
Oh jes ...

det er jo den *rigtige* løsning =:·]
Avatar billede cbkc. Nybegynder
03. august 2001 - 09:18 #5
Tak for interessen til alle parter.

Mht. den nemme: Ja, det er den rigtige måde at gøre det på, desværre er den rigtige ikke altid den mulige. Muligheden for at enkelte personer bliver oprettet uden om grupper, er tilstede, da jeg kan ikke styre hvem der gør.

P.S.: Beklager den sommetider lange responstid, men jeg arbejder kun 10 timer om ugen i gns.:-).
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