You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mitarbeiter auf der Ebene FO sollten mit der Rolle Mitarbeiter/ Kassier auch in "ohne Rollen" suchen können. Aktuell können nur Admins Personen "ohne Rollen" über die globale Suche finden.
Achtung: Die Mitarbeiter und Kassier sollen dabei nur die Personen ohne Rollen innerhalb der eigenen FO finden. Personen welche die letzte Rolle in einer anderen FO hatten, sollen nicht gefunden werden. In dieser Hinsicht unterscheidet sich diese neue Fähigkeit von der bisherigen Fähigkeit von Admins.
⚠️Achtung beim Testen auf Integration: Die Liste von überhaupt auffindbaren Personen wird für 15 Minuten gecached. Also wenn eine Person "gelöscht" wird, kann erst 15 Minuten nach der letzten Suche getestet werden, ob die gelöschte Person in der Suche wirklich noch sichtbar ist.
Tech-Spec
Umsetzung im Core, da sich das Feature verallgemeinern lässt und keine Zugriffserweiterung darstellt (es ist primär ein bequemerer Weg, gelöschte Personen zu finden, welche man sowieso schon finden könnte)
Die Permissions :layer_full bzw. :layer_and_below_full vergeben bisher den Zugang auf die "Ohne Rollen"-Ansicht
An denselben Permissions können wir daher diese Fähigkeit aufhängen
Man braucht die :index_deleted_people Ability um diese Ansicht zu sehen
Admins haben die :show Ability auf den gelöschten Personen, aber nicht :show_details oder :show_full. So können sie nur die Kontaktangaben der gelöschten Personen einsehen:
Diese Informationen sind mehr oder weniger dieselben wie man auch auf der Ohne-Rollen-Ansicht sehen kann:
Wir können den berechtigten Personen in den Layers also ebenfalls die :show Permission auf ihren "Ohne Rollen" Personen vergeben, ohne das Berechtigungssystem gross auszuweiten
TODO
In SearchStrategies::Base zusätzlich zum Admin-if neuen Code einfügen, der alle Grupen der current_person holt, aus diesen Gruppen die Layers berechnet, und diese nach can(:index_deleted_people, layer) filtert
Die IDs aller gelöschten Personen dieser Layers ebenfalls zu den erlaubten ids hinzufügen (Group::DeletedPeople.deleted_for(layer).pluck(:id) oder so ähnlich)
In PersonAbility die :show Berechtigung auf den gelöschten Personen vergeben
Achtung: Nur das letzte permission(:foo).may(:bar) hat tatsächlich einen Effekt:
# falsch:permission(:layer_full).may(:show).condition_a# wird ignoriert wegen dem zweiten, gleich beginnenden Statementpermission(:layer_full).may(:show).condition_b# richtig:permission(:layer_full).may(:show).condition_a_or_condition_b# so werden die Bedingungen kombiniert
Die Logik für deleted_people in der Ability muss neu geschrieben werden
Bisher werden die gelöschten Personen einer Gruppe in Group::DeletedPeople berechnet
Für die Ability muss diese Logik quasi umgekehrt geschrieben werden: Gegeben eine Person, muss entschieden werden ob diese Person in der betroffenen Gruppe als "Ohne Rollen" gilt, also ob sie durch Group::DeletedPeople.deleted_for(group) gefunden werden würde. Das ist unter Umständen nicht ganz trivial, weil alte gelöschte Rollen durch neue, inzwischen wieder gültige Rollen übersteuert werden können.
Specs schreiben
Mit angemessener Rolle "durchklicken"
CHANGELOG-Eintrag unter "unreleased" unten hinzufügen
The text was updated successfully, but these errors were encountered:
mtnstar
changed the title
Globale Suchfunktion für Personen ohne Rollen für Rolle Mitarbeiter und Kassier der FO aktivieren
PEOPLE: Globale Suchfunktion für Personen ohne Rollen für Rolle Mitarbeiter und Kassier der FO aktivieren
Nov 20, 2022
carlobeltrame
changed the title
PEOPLE: Globale Suchfunktion für Personen ohne Rollen für Rolle Mitarbeiter und Kassier der FO aktivieren
PEOPLE: Globale Suchfunktion für Personen ohne Rollen für Rolle Mitarbeiter und Kassier der FO ermöglichen
Dec 16, 2022
Mitarbeiter auf der Ebene FO sollten mit der Rolle Mitarbeiter/ Kassier auch in "ohne Rollen" suchen können. Aktuell können nur Admins Personen "ohne Rollen" über die globale Suche finden.
Achtung: Die Mitarbeiter und Kassier sollen dabei nur die Personen ohne Rollen innerhalb der eigenen FO finden. Personen welche die letzte Rolle in einer anderen FO hatten, sollen nicht gefunden werden. In dieser Hinsicht unterscheidet sich diese neue Fähigkeit von der bisherigen Fähigkeit von Admins.
Tech-Spec
:layer_full
bzw.:layer_and_below_full
vergeben bisher den Zugang auf die "Ohne Rollen"-Ansicht:index_deleted_people
Ability um diese Ansicht zu sehen:show
Ability auf den gelöschten Personen, aber nicht:show_details
oder:show_full
. So können sie nur die Kontaktangaben der gelöschten Personen einsehen::show
Permission auf ihren "Ohne Rollen" Personen vergeben, ohne das Berechtigungssystem gross auszuweitenTODO
if
neuen Code einfügen, der alle Grupen dercurrent_person
holt, aus diesen Gruppen die Layers berechnet, und diese nachcan(:index_deleted_people, layer)
filtertids
hinzufügen (Group::DeletedPeople.deleted_for(layer).pluck(:id)
oder so ähnlich):show
Berechtigung auf den gelöschten Personen vergebenpermission(:layer_full).may(:show).deleted_people_in_same_layer
permission(:layer_and_below_full).may(:show).deleted_people_in_same_layer_or_below
permission(:foo).may(:bar)
hat tatsächlich einen Effekt:deleted_people
in der Ability muss neu geschrieben werdenGroup::DeletedPeople
berechnetGroup::DeletedPeople.deleted_for(group)
gefunden werden würde. Das ist unter Umständen nicht ganz trivial, weil alte gelöschte Rollen durch neue, inzwischen wieder gültige Rollen übersteuert werden können.The text was updated successfully, but these errors were encountered: