Hallo Zusammen,
gibt es eine Möglichkeit zu erkennen, wann sich ein User das letzte Mal im WM angemeldet hat?
VG
Andreas
Letze Anmeldung eines Users
-
- Posts: 712
- Joined: 07. May 2009, 18:27
- Location: Burscheid
- Contact:
Re: Letze Anmeldung eines Users
Leider gibt es meines Wissens aktuell keine Möglichkeit die letzte Anmeldung eines Benutzers ohne Anpassungen zu erhalten, da es hierfür keinen Datenbank-Eintrag gibt.
Mit kleineren Anpassungen lässt sich deine Anforderung jedoch ab Version 9.1.3 ohne größere Aufwände und ohne Auswirkungen auf zukünftige Updates umsetzen. Seit oben genannter Version ist es nämlich die Möglichkeit globale Javascripts update-safe einzubinden (Stichwort: Custom Workspace).
Mittels eines JavaScript könntest du nach der Anmeldung (Überprüfung der Session-Cookies) einen Web-API Aufruf machen und z.B. einen Workflow starten. Alternativ kann auch direkt ein entsprechende Attribut mittels Fragment-Update Request aktualisiert werden.
Entsprechend werden benötigt:
1 Custom Workspace mit JavaScript-Datei für API Aufruf
1 beliebiges Feld (z.B. UD_LastLogonDate in der SPSUserClassBase)
Mit kleineren Anpassungen lässt sich deine Anforderung jedoch ab Version 9.1.3 ohne größere Aufwände und ohne Auswirkungen auf zukünftige Updates umsetzen. Seit oben genannter Version ist es nämlich die Möglichkeit globale Javascripts update-safe einzubinden (Stichwort: Custom Workspace).
Mittels eines JavaScript könntest du nach der Anmeldung (Überprüfung der Session-Cookies) einen Web-API Aufruf machen und z.B. einen Workflow starten. Alternativ kann auch direkt ein entsprechende Attribut mittels Fragment-Update Request aktualisiert werden.
Entsprechend werden benötigt:
1 Custom Workspace mit JavaScript-Datei für API Aufruf
1 beliebiges Feld (z.B. UD_LastLogonDate in der SPSUserClassBase)
-
- Posts: 712
- Joined: 07. May 2009, 18:27
- Location: Burscheid
- Contact:
Re: Letze Anmeldung eines Users
Hallo und vielen Dank für die Antwort. Bei Java bin ich leider raus. Ist nicht meine Kernkompentenz
Allerdings habe ich rausgefunden, dass man es im Eventlog am Applikationsserver erkennen kann.
Allerdings habe ich rausgefunden, dass man es im Eventlog am Applikationsserver erkennen kann.
Re: Letze Anmeldung eines Users
Erweitern der SPSUserClassBase um das Attribute UD_LastLogon (DateTime)
Erstellen eines CustomWorkspace: /%M42RootFolder%/WM/workspaces/<NameOfYourWorkspace>
Der Order enthält folgende 2 Dateien:
- workspace.json
Beachte: Für das direktes Speichern des Anmelde-Zeitpunktes muss der Benutzer entsprechende Berechtigungen auf das Personen-Objekt (schreibend) haben. Andernfalls kann ein Workflow verwendet werden, welcher die Änderung vornimmt.
Erstellen eines CustomWorkspace: /%M42RootFolder%/WM/workspaces/<NameOfYourWorkspace>
Der Order enthält folgende 2 Dateien:
- workspace.json
- CustomScript.js{
description: "Calls custom Javascript (Matrix42 Update API)",
resources: [
"CustomScript.js"
]
}
Das Script wird alle 3 Sekunden aufgerufen und versucht den LastLogon-Timestamp zu aktualisieren. Sofern der PUT Befehl funktioniert hat (Status 204), wird das Interval annuliert und nicht mehr ausgeführt. Ein erneutes Aufrufen der Seite erzeugt ein neues Interval. Folglich speicherst du mit dem Script immer den letzten Zeitpunkt, wenn ein User die UUX läd und angemeldet ist.// Start - Custom-Code //
var intervalSetLogonTimestamp = window.setInterval(function () {
if (localStorage.getItem('mx.auth.session.token')) { /* Check Session */
var userInfo = JSON.parse(localStorage.getItem("mx.shell.userInfoCache")); /* Load User-Info */
var token = localStorage.getItem("mx.auth.session.token"); /* User Token*/
var host = window.location.hostname; /* Hostname */
if (userInfo && token) {
var xhr = new XMLHttpRequest();
var data = {
ID: userInfo.Id, /* CurrentUser ID */
UD_LastLogon: new Date().toISOString() /* Set your custom field to actual UTC time*/
}
data = JSON.stringify(data);
xhr.open("PUT", "https://" + host+ "/m42Services/api/data/fragments/SPSUserClassBase", true);
xhr.setRequestHeader("Authorization", "Bearer " + token);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function (e) {
if (xhr.readyState === 4) {
var result;
if (xhr.status === 204) {
window.clearInterval(intervalSetLogonTimestamp); /* Deactivate Interval */
intervalSetLogonTimestamp = null;
//console.log("Successful");
}
}
};
xhr.onerror = function (e) {
var result = xhr.status + ': ' + xhr.statusText + '. ' + xhr.responseText;
console.log(result);
};
xhr.send(data);
}
}
}, 3000);
// End - Custom-Code //
Beachte: Für das direktes Speichern des Anmelde-Zeitpunktes muss der Benutzer entsprechende Berechtigungen auf das Personen-Objekt (schreibend) haben. Andernfalls kann ein Workflow verwendet werden, welcher die Änderung vornimmt.
Last edited by Steinbit on 07. Jul 2020, 16:14, edited 2 times in total.
-
- Posts: 712
- Joined: 07. May 2009, 18:27
- Location: Burscheid
- Contact:
Re: Letze Anmeldung eines Users
Krasser Shit
Danke Dir, werde ich mal ausprobieren
Danke Dir, werde ich mal ausprobieren
Who is online
Users browsing this forum: No registered users and 9 guests