Letze Anmeldung eines Users

Post Reply
User avatar
llaprosper
Posts: 709
Joined: 07. May 2009, 18:27
Location: Burscheid
Contact:

Letze Anmeldung eines Users

Post by llaprosper » 09. Jun 2020, 08:16

Hallo Zusammen,
gibt es eine Möglichkeit zu erkennen, wann sich ein User das letzte Mal im WM angemeldet hat?

VG
Andreas

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Letze Anmeldung eines Users

Post by Steinbit » 17. Jun 2020, 13:20

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)

User avatar
llaprosper
Posts: 709
Joined: 07. May 2009, 18:27
Location: Burscheid
Contact:

Re: Letze Anmeldung eines Users

Post by llaprosper » 22. Jun 2020, 10:06

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.

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Letze Anmeldung eines Users

Post by Steinbit » 22. Jun 2020, 16:45

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
{
description: "Calls custom Javascript (Matrix42 Update API)",
resources: [
"CustomScript.js"
]
}
- CustomScript.js
// 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 //
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.

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.

User avatar
llaprosper
Posts: 709
Joined: 07. May 2009, 18:27
Location: Burscheid
Contact:

Re: Letze Anmeldung eines Users

Post by llaprosper » 24. Jun 2020, 09:00

Krasser Shit :lol:
Danke Dir, werde ich mal ausprobieren

Post Reply

Return to “Administration”

Who is online

Users browsing this forum: No registered users and 3 guests