Autor Thema: Full Access per LotusScript abfragen  (Gelesen 2220 mal)

Offline Riccardo Virzi

  • Junior Mitglied
  • **
  • Beiträge: 70
Full Access per LotusScript abfragen
« am: 02.06.22 - 09:47:18 »
Ich möchte in einem LotusScript abfragen, ob der Benutzer Full Access aktiviert hat, bevor ich mit meiner Funktion starte. Falls nein, soll die Funktion mit einer Meldung abbrechen.

In den Script Klassen habe ich nichts gefunden. Habe ich das übersehen oder geht das nicht?

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 672
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #1 am: 02.06.22 - 10:56:54 »
Ich würde simpel einen Zugriff versuchen, der nur mit Full Access möglich ist und den zu erwartenden Fehler mit der von dir gewünschten Meldung abfangen.

HTH
Carsten

Offline Richard Eder

  • Frischling
  • *
  • Beiträge: 14
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #2 am: 03.06.22 - 12:25:22 »
Vielleicht ist das brauchbar? @ServerAccess([FULLACCESS];@UserName)

Mit einem Evaluate sollte das dann auch in LS gehen:

Sub Initialize
   
   Const FORMULA= |@ServerAccess([FULLACCESS];@UserName)|
   
   Dim vRet As Variant
   
   vRet = Evaluate(FORMULA)
      
End Sub
« Letzte Änderung: 03.06.22 - 12:52:42 von Richard Eder »
Welche Farbe hat ein Schlumpf bei Gelbsucht - grün?
Die Wahrscheinlichkeit mit der ein Frühstücksbrot auf die Marmeladenseite fällt, verhält sich direkt proportional zum Wert der Tischdecke (murphy's law)
Joss Stone about success: Once, if you figured out what you really want (that makes you happy). It doesn't have to be very big and famous or very, very rich or successful in any other kind of business. As long as you are smiling - 95 percent of the time - then you are successful. :-)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #3 am: 03.06.22 - 12:42:12 »
Hallo Ricardo,

beim Prüfen der Zugriffsrechte wird die ALC der Datenbank herangezogen. Infos findest dazu in der Hilfe unter "NotesACL", "NotesACLEntry" und "Level (NotesACLEntry)"

Dabei macht es einen Unterschied, ob eine Person oder auch Gruppe explizit in der ALC genannt ist oder implizit (User ist nur Mitglied in einer Zugriffsgruppe, die evtl. Mitglied einer Zugriffsgruppe ist).

Für explizit genannte Benutzer und Gruppen kannst Du das Folgende verwenden:
Code
	Dim nss As New NotesSession
	Dim db As NotesDatabase
	Dim acl As NotesACL
	Dim aclEntry As NotesACLEntry
	Dim UName As NotesName
	Dim Rolle As String
	
	Set db = nss.CurrentDatabase
	Set acl = db.acl
	
	Rolle = "[Admin]"
	
	'+++ Prüfen einer explizit genannten Person
	Set UName = nss.CreateName(nss.UserName)	' aktueller Benutzer
	Set aclEntry = acl.GetEntry(UName.Canonical)
oder
	'+++ Prüfen einer explizit genannten Gruppe
	Set UName = New NotesName("Admin/ACME/DE")
	Set aclEntry = acl.GetEntry(UName.Common)
	
	'Prüfen auf generelle Zugriffsrechte
	If aclEntry.Level = acllevel_manager Then
		Messagebox"Ist Manager"
	Else
		Messagebox"Ist nicht Manager"
	End If
	
	'Prüfen auf Mitgliedschaft in einer bestimmten Rolle
	If aclEntry.IsRoleEnabled(Rolle) Then
		Messagebox"Ist in Rolle " + Rolle
	Else
		Messagebox"Ist nicht in Rolle " + Rolle
	End If

Je nachdem, wie in der Zugriffskontrolliste der Datenbank die Gruppen benannt sind, ist zu beachten, dass bei einer Person der canonische Name verwendet werden muss (hier: Max Mustermann/ACME/DE), bei einer Gruppe der "einfache" (common) Name (hier: Admin).

Bei impliziten Abfragen muss man nicht direkt auf die ACL zugreifen.

Code
	Dim ss As New NotesSession
	Dim db As NotesDatabase
	Dim UName As NotesName
	Dim Rolle As String
	Dim Rollen As Variant
	
	Set db = ss.CurrentDatabase

	'+++ Prüfen einer implizit genannten Person
	Set UName = nss.CreateName(nss.UserName)	' aktueller Benutzer
oder
	'+++ Prüfen einer implizit genannten Gruppe
	Set UName = New NotesName("Admin/ACME/DE")
	
	Rolle = "[Admin]"
	
	'+++ Prüfen einer Person in einer Gruppe der ACL
	'Prüfen auf generelle Zugriffsrechte
	If db.QueryAccess(UName.Canonical) = acllevel_manager Then
		Messagebox"Ist Manager"
	Else
		Messagebox"Ist nicht Manager"
	End If
	
	'Prüfen auf Mitgliedschaft in einer bestimmten Rolle
	Rollen = db.QueryAccessRoles(UName.Canonical)
	If Isnull(Arraygetindex(Rollen, Rolle)) Then
		Messagebox"Ist nicht in Rolle " + Rolle
	Else
		Messagebox"Ist in Rolle " + Rolle
	End If
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #4 am: 03.06.22 - 13:08:41 »
Vielleicht ist das brauchbar? @ServerAccess([FULLACCESS];@UserName)

Das prüft aber nur, ob der User generell FULLACCESS Rechte hat, nicht aber, ob er auch mit den Rechten unterwegs ist.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #5 am: 03.06.22 - 20:10:35 »
Zitat
Ich möchte in einem LotusScript abfragen, ob der Benutzer Full Access aktiviert ha

Was ist denn überhaupt dein use-case?

Welche Aktion erfordert FullAccess? ACL ändern ? Warum kann der Admin das nicht mit seinen normalen Rechten?

Und wenn es darum geht, dann hat CarstenH Dir schon eine Lösung gegeben.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Antw:Full Access per LotusScript abfragen
« Antwort #6 am: 04.06.22 - 14:29:26 »
Erstellt einen Datenbank (z.B. \Admin\NoAccess.nsf ) wo der Default kein Zugriff hat, und sonnst nichts in der ACL steht.

Versuche den DB zu öffnen. Mit Full Access gelingt es, sonnst nicht.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 284
  • Geschlecht: Männlich
  • Mal wieder: Flachmann ist Schuld!
Antw:Full Access per LotusScript abfragen
« Antwort #7 am: 08.06.22 - 08:40:23 »
Diesen Use-case hatte ich auch schon: einfach im Agent feststellen, ob der aktuelle User aktuell FullAdmin-Rechte hat. Wenn nicht, wollte ich mit passender Meldung abbrechen.

Leider fand ich bislang auch keine Lösung.

Wenn die Rechte fehlen läuft mein Agent irgendwann in einen Fehler und man muss ihn dann mit passenden Rechten neu starten. Vorher biete ich noch die Möglichkeit zum manuellen Abbruch an. Nicht wirklich schön, geht aber, da der Agent ja sowieso nur von Admins ausgeführt werden kann. Denen kann man das zumuten.   ::)

Gruß,
  __________
  _/_
  /lachmann

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #8 am: 08.06.22 - 08:48:03 »
Ich denke, der Vorschlag von Rudi (ronka) ist total einfach umzusetzen und sollte die Problemstellung lösen.
-Werner

Offline Richard Eder

  • Frischling
  • *
  • Beiträge: 14
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #9 am: 08.06.22 - 14:13:07 »
Das klingt doch gut..

https://atnotes.de/index.php/topic,62426.msg398903.html#msg398903

Auch wenn's Java ist -> Damit könnte man doch beim Start ein Profil befüllen und in LS nutzen.

http://hasselba.ch/blog/?p=1345

WICHTIG: These files can be found in <Notes>\osgi\shared\eclipse\plugins.
Welche Farbe hat ein Schlumpf bei Gelbsucht - grün?
Die Wahrscheinlichkeit mit der ein Frühstücksbrot auf die Marmeladenseite fällt, verhält sich direkt proportional zum Wert der Tischdecke (murphy's law)
Joss Stone about success: Once, if you figured out what you really want (that makes you happy). It doesn't have to be very big and famous or very, very rich or successful in any other kind of business. As long as you are smiling - 95 percent of the time - then you are successful. :-)

Offline Riccardo Virzi

  • Junior Mitglied
  • **
  • Beiträge: 70
Antw:Full Access per LotusScript abfragen
« Antwort #10 am: 20.06.22 - 09:36:44 »
Danke für die Ideen und sorry für die späte Rückmeldung, war leider beschäftigt die letzten Tage.

Zum use case: die Admins sollen unregelmäßig per LotusScript Datenbank Einstellungen auslesen, welche ich dann in einer separaten Datenbank zur besseren Übersicht speichere. Unter anderem benötigen wir Einstellungen aus den Maildatenbanken, auf welche die Admins kein Zugriff haben. Deswegen muß zuerst FullAccess aktiviert und dann die Funktion aufgerufen werden. Eine Idee war, daß das Script einen Background Agent mit FullAccess aufruft, was leider nicht gewünscht ist. Deswegen wollte ich beim Start des Scripts prüfen, ob der Benutzer FullAccess aktiviert hat um eine entsprechende Meldung auszugeben, falls nicht.

Ich denke, daß ich die Lösung mit einer Datenbank noaccess.nsf umsetzen werde.

Danke

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #11 am: 20.06.22 - 11:01:03 »
Zitat
Unter anderem benötigen wir Einstellungen aus den Maildatenbanken, auf welche die Admins kein Zugriff haben.

OK.
Zitat
Deswegen muß zuerst FullAccess aktiviert.

Was denn nun . Die Admins haben keinen Zugriff, können sich den aber leicht verschaffen. Die Spuren kann man dann ebenso leicht verwischen. Das ist aus meiner Sicht grob fahrlässig.

Zitat
Eine Idee war, daß das Script einen Background Agent mit FullAccess aufruft, was leider nicht gewünscht ist.
Der Agent läuft dann im Serverkontext signiert mit der ServerID, oder einer entsprechenden ID. FULLACCESS muss nicht aktiviert sein, da der Server ja sowieso auf die Datenbanken zugreifen kann.

Verstehe nicht, warum das so nicht gewünscht ist. Denn genau so sollte es umgesetzt werden. dann brauchen die Admins auch keinen FULLACCESS. 
Hinzu kommt noch, dass die Admin dann immer schön auf einen Button klicken müssen, wenn Änderungen an den Maildatenbanken erfolgt sind, um die neuen Werte einzulesen. Klingt für mich nach Steinzeit-Administration und Arbeitsbeschaffung.



Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Antw:Full Access per LotusScript abfragen
« Antwort #12 am: 20.06.22 - 16:07:07 »
Zuerst ist mir die Antwort von Ulrich als "scharf" bzw. "hart" vorgekommen, aber nachdem ich mir das nochmals durchgelesen habe, muss ich sagen, dass er aus meiner Sicht vollkommen Recht hat:

a) Wenn die Admins schon keinen Zugriff auf die Mail-DBs haben sollen, dann sollten sie dies auch nicht über eine solche Hintertür haben.
Man sollte Full Access Admin nicht konzeptionell für Standardtätigkeiten brauchen.

b) Besser ist sicherlich ein periodischer Agent, der die entsprechenden Einstellungen jederzeit "up to date" hält.

-Werner

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz