Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Jörg am 04.03.10 - 12:12:19

Titel: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 12:12:19
Hallo,

ich möchte gerne verhindern, das Personen ohne die
entsprechende Berechtigung (Editorfelder) keine Dokumente öffnen dürfen.
Hierzu habe ich folgendes geschrieben:
Code
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim uidoc As NotesuiDocument
	Dim doc As NotesDocument
	Dim szStatus As String
	Dim szStatus_docadmin As String
	Dim szStatus_docstatus As String
	
	Dim allowEdit As Integer
	
	Set UIdoc=workspace.CurrentDocument
	Set doc=workspace.CurrentDocument.Document
	
	szStatus = source.FieldGetText("UserRoles")
	szStatus_docadmin = source.FieldGetText("dcauthors")
	szStatus_docstatus = source.FieldGetText("Doc_Freigabe")	
	
	If SaveOptions = 0	Then
		SaveOptions = 1
	End If
'Wenn Doc im Lesemodus, dann Folgecode nicht beachten
'	If Source.EditMode = False Then Exit Sub
	
'Prüfe Statusfeld...
	If Instr(1, szStatus, "admin") > 1  Then
'		Source.EditMode = True
		allowEdit = False		
		Exit Sub
	Else		
		If szStatus_docadmin="" And Instr(1, szStatus, "admin") > 1  Then
'			Source.EditMode = True
			allowEdit = False		
			Exit Sub
		Else	
			If Instr(1, szStatus_docadmin, session.CommonUserName) > 1 Then					
'				Source.EditMode = True
				allowEdit = False
				Exit Sub
			Else	
				If szStatus_docstatus="No_Doc_Freigabe"  Then
					Exit Sub
				Else			
					If Not Instr(1, szStatus_docadmin, session.CommonUserName) > 1 Or szStatus_docstatus="Doc_Freigabe" Then				
						allowEdit = False
						'Call doc.Save( False, False)									
						Msgbox "The 'edit mode' is not allowed.", 64, "Error"		
						Exit Sub			
					End If		
				End If
			End If				
		End If
	End If 

Aber dies will nicht so ganz funktionieren , da ich immer eine Meldung über verschachtelte Ereignisse erhalte.
wo liegt denn hier der Fehler, und wo plaziert man denn diesen Code am besten Querymodechange,postmodechange oder postopen
damit keinerlei Dokumente unbeabsichtigt verändert werden können.

Danke schon mal Gruß Jörg
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: ZaLudtske am 04.03.10 - 12:20:24
Hallo,

umdas Öffnen zu verhindern muß der Code in das Event QueryOpen. Das ganze kann aber dann immer noch über den Debugger der allen zur Verfügung steht, umgangen werden.

HTH

Rainer
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: dirk_2909 am 04.03.10 - 12:22:43
Im Queryopen musst Du dann aber Continue auf false setzen. Schon wird das doc nicht mehr geöffnet.

Wenn Du das im Postopen machst, musst Du ein uidoc.Close machen.

Bei QueryModeChange und PostModeChange ist das Dokument ja schon geöffnet.
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: ascabg am 04.03.10 - 12:31:05
Hallo,

Wobei wir dann aber wieder bei dem Punkt angekommen sind, welche Events werden durchlaufen wenn der User STRG + B (STRG + E) betaetigt.

Funktioniert der Code dann immer noch?

Auch ware dieses aus meiner Sicht doch ein schoenes Beispiel fuer Leser- und Autorenfelder.


Andreas
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: dirk_2909 am 04.03.10 - 12:46:03
bei Strg+B wir auch ein QueryOpen und ein PostOpen durchlaufen. Nur nicht ein QueryModeChange.
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 13:36:46
Hi,

danke für die Antworten, ich hätte noch ein Verständnisproblem  ::) ....

Wenn ich dann das Continue auf false setze , wie und wann muss ich denn
dies wieder zurück setzen und gibt es eine Stelle in meinen Code wo es am sinvollsten ist???

Gruß Jörg
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: ascabg am 04.03.10 - 13:38:43
Gar nicht.
Macht Dein Notes fuer Dich.


Andreas
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 13:41:49
Danke .. dann werde ich mal an loslegen....

Gruß Jörg
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 13:58:55
und schon hängt es bei der Definition der Variable

Code
Set doc=workspace.CurrentDocument.Document

ich denke mal , das dies daher kommt da ich hier auf das UIdoc zugreifen muss, oder????

Gruß Jörg

Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: ascabg am 04.03.10 - 14:26:05
Wie sieht denn der restliche Code aus und wo hast Du diesen eingebunden?

Vorschlagen wuerde ich jedoch Folgendes.

Code
Dim uiws As New NotesUIWorkspace
Dim doc as NotesDocument

Set doc = uiws.CurrentDocument.Document


Andreas
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 15:25:30
Hi,

klappt nicht...

wie kann cih denn auf die Source Variablen  zugreifen ????

Gruß Jörg
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: m3 am 04.03.10 - 15:39:05
Äh. Hast Du da nicht einen grundsätzlichen Denkfehler?
Wenn die User im Editor-Feld stehen, dürfen sie das Dokument sehen und Editieren.
Wen die User das Dokument nicht sehen dürfen, darfst Du sie weder im Reader- noch im Editor-Feld eintragen. Dazu braucht man keinen Code.
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 15:50:09
JaNein...
Ich mußte der Lesergruppe hier Editoren-Rechte
geben , damit diese keine fehlermeldung erhalten,da im Hintergrund
Profildocs beschrieben werden.

Bestimmt könte man dies anderes lösen , aber ich weiß nicht wie,
da ich keinen ansatz habe um die Hilfe zu befragen.

Gruß Jörg.
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: Jörg am 04.03.10 - 17:48:24
Hi,

hab es nun hinbekommen...

Gruß Jörg
Titel: Re: Dokument für nicht berrechtigte in Editmode=false setzen
Beitrag von: koehlerbv am 04.03.10 - 18:30:59
Jeder User, der etwas Bastelwillen besitzt, kann Dein Konstrukt aushebeln - dieses tazgt schlicht nichts.

Verwende Autorenfelder (und gebe den Usern nur Autor-Rechte), und Du bist auf der wirklich sicheren Seite. Alles andere ist Gefrickel.

Bernhard