Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo,
ich benötige Unterstützung für die Zugriffsverwaltung:
Der Zugriff auf Mitarbeiterdaten wird über den Section Access je Kostenstelle anhand einer Excel-Datei verwaltet.
Eingeschränkt soll nun ein Mitarbeiter innerhalb einer Kst. nur bestimmte Personalnummern angezeigt bekommen.
Vorhandene Felder:
Mitarbeiter-Name MAIER, der die Berechtigung erhalten soll kommt aus obiger Excel-Datei.
Bsp. Feld "KURZNAME" Mitarbeitername: "MAIER"
Im Personalstamm des anzuzeigenden Mitarbeiters ist jeweils im Feld "BERECHTIGUNG" der Name MAIER hinterlegt.
Wenn im Personalstamm nichts hinterlegt ist, gilt die Berechtigungsprüfung über die Kst.
Wie kann ich dies im Skript abbilden? Für Unterstützung wäre ich dankbar. Vielen Dank.
Wenn nicht nur über ein Feld die Zugriffsrechte gesteuert werden sollen, sondern über mehrere, dann müssen auch alle diese Felder in die Section Access integriert werden. Grundsätzlich ist das auch über mehrere separate Felder möglich - einfacher ist es meist aber, die Felder zusammenzufügen, wie:
Feld1 & '|' & Feld2 as KEY
Davon abgesehen, wird es wohl erforderlich sein, zumindest ein paar dieser KEY Werte zu duplizieren bzw. eventuell alle Mitarbeiter pro KST aufzulisten, denn der Vereinfachungsansatz mit dem Wildcard * einen Zugriff auf alle Datensätze zu gewähren, funktioniert im Generellen nur bedingt und bei multiplen Feldern und/oder komplexen Anforderungen noch viel weniger, denn er bezieht sich nur auf die gelisteten Werte.
Falls es nicht nur ein paar KST + MA sind, deren Kombinationen man Excel mit einem überschaubaren manuellen Aufwand zusammenkopieren kann, sollte man diese Daten per Schleifen im Skript erstellen oder vielleicht auch über einen kartesischen join aus den Feldern und das dann anschließend mit where-Bedingungen auf die finalen Berechtigungen angepasst wird.
Bevor ich das so angehen würde, würde ich aber schauen, ob man das gewünschte auch mit einem zweiten Kostenstellen-Feld als Schlüsselfeld für die Section Access umsetzen kann, z.B. indem man in die Stammdaten ein Mapping einfügt, wie:
m: mapping load * inline [
KEY, Return
1|A, KST & ' - beschränkt'
....];
applymap('m', KST & '|' & MA, KST) as KEY
Die Kombination, die nicht gefunden wird, bekommt die originäre KST und ist somit nicht weiter beschränkt und alle mapbaren Werte erhalten den modifizierten Schlüsselwert, die nicht in der Section Access gelistet sind und somit auch keinen Zugriff. Die Idee hierbei ist, nur die Schlüsselwerte im Datenmodell anzupassen und nicht in der Section Access oder sogar in beiden Bereichen.
So wirklich trivial ist das nicht. Ich empfehle daher, dies nicht mit den originalen Anwendungen/Daten zu machen, sondern mit einem kleinen Dummy von vielleicht jeweils10 Datensätzen als Fakten + Personalstamm + Section Access. Wenn die Logik funktioniert kann man das ja dann übertragen.
Vorher: auf jedenfall ein BACKUP von allem machen!
Wenn nicht nur über ein Feld die Zugriffsrechte gesteuert werden sollen, sondern über mehrere, dann müssen auch alle diese Felder in die Section Access integriert werden. Grundsätzlich ist das auch über mehrere separate Felder möglich - einfacher ist es meist aber, die Felder zusammenzufügen, wie:
Feld1 & '|' & Feld2 as KEY
Davon abgesehen, wird es wohl erforderlich sein, zumindest ein paar dieser KEY Werte zu duplizieren bzw. eventuell alle Mitarbeiter pro KST aufzulisten, denn der Vereinfachungsansatz mit dem Wildcard * einen Zugriff auf alle Datensätze zu gewähren, funktioniert im Generellen nur bedingt und bei multiplen Feldern und/oder komplexen Anforderungen noch viel weniger, denn er bezieht sich nur auf die gelisteten Werte.
Falls es nicht nur ein paar KST + MA sind, deren Kombinationen man Excel mit einem überschaubaren manuellen Aufwand zusammenkopieren kann, sollte man diese Daten per Schleifen im Skript erstellen oder vielleicht auch über einen kartesischen join aus den Feldern und das dann anschließend mit where-Bedingungen auf die finalen Berechtigungen angepasst wird.
Bevor ich das so angehen würde, würde ich aber schauen, ob man das gewünschte auch mit einem zweiten Kostenstellen-Feld als Schlüsselfeld für die Section Access umsetzen kann, z.B. indem man in die Stammdaten ein Mapping einfügt, wie:
m: mapping load * inline [
KEY, Return
1|A, KST & ' - beschränkt'
....];
applymap('m', KST & '|' & MA, KST) as KEY
Die Kombination, die nicht gefunden wird, bekommt die originäre KST und ist somit nicht weiter beschränkt und alle mapbaren Werte erhalten den modifizierten Schlüsselwert, die nicht in der Section Access gelistet sind und somit auch keinen Zugriff. Die Idee hierbei ist, nur die Schlüsselwerte im Datenmodell anzupassen und nicht in der Section Access oder sogar in beiden Bereichen.
So wirklich trivial ist das nicht. Ich empfehle daher, dies nicht mit den originalen Anwendungen/Daten zu machen, sondern mit einem kleinen Dummy von vielleicht jeweils10 Datensätzen als Fakten + Personalstamm + Section Access. Wenn die Logik funktioniert kann man das ja dann übertragen.
Vorher: auf jedenfall ein BACKUP von allem machen!