Autor Thema: aktuellen Benutzernamen auslesen  (Gelesen 7138 mal)

Sebastianh

  • Gast
aktuellen Benutzernamen auslesen
« am: 23.08.10 - 15:51:51 »
Hallo,

wie kann ich, aus einem PlugIn / einer View heraus den aktuellen (am Client angemeldeten) Nutzer auslesen) Die Client API stellt mir dazu keine Methode bereit, oder ich bin zu blind, diese zu sehen?
CurrentDocument und CurrentView lassen sich doch auch auslesen, warum nicht CurrentUser?

Grüße,

Sebastian

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: aktuellen Benutzernamen auslesen
« Antwort #1 am: 23.08.10 - 15:54:51 »
NotesSession.UserName. Läuft der Code via Browser auf dem Domino, dann NotesSession.EffectiveUsername.

Bernhard

Sebastianh

  • Gast
Re: aktuellen Benutzernamen auslesen
« Antwort #2 am: 23.08.10 - 16:16:10 »
ok, da hab ich mich vielleicht nicht ganz richtig ausgedrückt. Ich habe zu dem Zeitpunkt an dem ich den am Client angemeldeten Benutzer abfragen will, natürlich bereits eine Session, die ich als Admin "ausführe" (und mit der ich "meine" Operationen ausführe. Ich will halt wissen, welcher Benutzer sich grade einen NotesClient aufgemacht hat. An die Session die im Client auf ist, kommt man ja leider so ohne weiteres nicht ran, oder?



Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: aktuellen Benutzernamen auslesen
« Antwort #3 am: 23.08.10 - 16:38:28 »
Jetzt sehe ich noch weniger durch. Wo und als was läuft Dein Code, und wessen Client-Angaben willst Du genau wissen?

Bernhard

Sebastianh

  • Gast
Re: aktuellen Benutzernamen auslesen
« Antwort #4 am: 23.08.10 - 16:50:05 »
Also,

mein Code ist ein Sidebar-Plugin, welches Notes Daten des aktuell angemeldeten Benutzers abgreift, und diese an eine andere Anwendung weiterreicht. Um intern mit den Daten "arbeiten" zu können, bin ich (in meinem Plugin) als Admin am Dominoserver angemeldet.
Da sich der Benutzer aber gegenüber der Zweitanwendung ebenfalls authentifizieren muss, muss ich wissen, welcher Benutzer momentan mit dem NotesClient arbeitet, um sicherzustellen, dass in beiden Anwendungen der selbe Benutzer angemeldet ist. (die zweite Anwendung liefert auch Daten zurück, die in einer CA angezeigt werden, aber eben nur dann, wenn ein Benutzer mit entsprechenden Berechtigungen angemeldet ist, daher ist ein Abgleich der (Benutzer-)Daten zwingend erforderlich)
War das so verständlich?

Sebastianh

  • Gast
Re: aktuellen Benutzernamen auslesen
« Antwort #5 am: 24.08.10 - 15:00:33 »
Habe es jetzt so gelöst, dass im Notesclient ein Agent läuft, der über den AgentContext den Benutzer ausliest, diesen dann via RMI an meine Java Anwendung gibt, die dann wiederrum vom PlugIn via RMI aufgerufen wird, und so den Benutzernamen an dieses durchreicht. Ist zwar von hinten durch die Brust mit der Faust ins Auge, aber es funktioniert. Jetzt wäre es noch ganz praktisch, wenn ich den Agenten aus meinem externen Javaprogramm aufrufen könnte. Ich meine das schonmal irgendwo gesehen zu haben, finde es allerdings nicht mehr wieder. Weiss hier jemand Rat?

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: aktuellen Benutzernamen auslesen
« Antwort #6 am: 25.08.10 - 11:52:40 »
Ist deine externe Java-Anwendung auf jedem Client deployed?
Sofern die User-Id im PATH des OS des Client steht, der Notes Client geöffnet ist und eine Sicherheitseinstellung entsprechend gesetzt ist, käme keine weitere Passwort-Abfrage, wenn dieser Agent aufgerufen wird.
Ist deine Java Anwendung nicht auf dem Client hast du Probleme, den Agenten mit dem NotesBenutzer starten zu lassen.
Hoffe das ist einigermassen nachvollziehbar. Hab wenig Zeit.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Sebastianh

  • Gast
Re: aktuellen Benutzernamen auslesen
« Antwort #7 am: 25.08.10 - 12:43:38 »
ich hatte eigentlich vor den Agenten auf dem Server (meiner Anwendung) laufen zu lassen. Aber Deine Ausführungen bringen mich dazu, Ihn im Client auszuführen.

Wenn ich mir allerdings wie folgt eine neue Instanz des Agenten anlege:
Code
LittleAgent la = new LittleAgent();
la.run() // oder auch alternativ: la.runNotes();
bekomme ich über beide run-Methoden nur einen NullPointer zurück:
Code
ava.lang.NullPointerException
	at lotus.domino.AgentBase.runNotes(Unknown Source)
	at lotus.domino.NotesThread.run(Unknown Source)
	at de.xxx.xxx.views.SideBarView$1.widgetSelected(SideBarView.java:199)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
        ...
Was fehlt dem Agenten denn noch?

edit: auch der Aufruf der agent.NotesMain(); führt zu einem NullPointer. Wieder scheint der Event zu fehlen. Irgendwie blicke ich da noch nicht ganz durch!

edit2: das mit dem Event war irreführend!
Code
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
getSession() liefert hier null zurück. Wie komme ich überhaupt von extern irgendwie an die Session? (womit ich eigentlich wieder beim Anfangsproblem wäre, der Kreis scheint sich zu schliessen!)
« Letzte Änderung: 25.08.10 - 13:21:36 von Sebastianh »

Sebastianh

  • Gast
Re: aktuellen Benutzernamen auslesen
« Antwort #8 am: 09.11.10 - 14:15:37 »
inzwischen ist es ein wenig her, dass ich eine Lösung gefunden hab, aber der Vollständigkeit halber hier mein Code, der mich zur gewünschten Lösung führte:
Code
	public static String getCurrentNotesUserName(){
		NotesSessionJob job = new NotesSessionJob("getCurrentNotesUserJob"){
			protected IStatus runInNotesThread(Session session,
					IProgressMonitor monitor) throws NotesException {
				setProperty(new QualifiedName(QUALIFIED_NAME_QUALIFIER, "NotesUser"), session.getUserName());
				return Status.OK_STATUS;
			}
        };
     job.schedule();
     try {
		job.join();
	} catch (InterruptedException e) {
		logger.debug("Fehler bei der Notes-Kommunikation");
	}
     Object ret = job.getProperty(new QualifiedName(QUALIFIED_NAME_QUALIFIER, "NotesUser"));
     return (String)ret;
	}

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz