AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
05.06.20 - 07:38:33
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Java und .NET mit Notes/Domino (Moderatoren: Axel, m3)
| | |-+  aktuellen Benutzernamen auslesen
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: aktuellen Benutzernamen auslesen  (Gelesen 4818 mal)
Sebastianh
Gast
« 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
Gespeichert
koehlerbv
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #1 am: 23.08.10 - 15:54:51 »

NotesSession.UserName. Läuft der Code via Browser auf dem Domino, dann NotesSession.EffectiveUsername.

Bernhard
Gespeichert
Sebastianh
Gast
« Antworten #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?


Gespeichert
koehlerbv
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
Sebastianh
Gast
« Antworten #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?
Gespeichert
Sebastianh
Gast
« Antworten #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?
Gespeichert
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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.
Gespeichert

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
« Antworten #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 » Gespeichert
Sebastianh
Gast
« Antworten #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;
}
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: