Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PEOPLE: Globale Suchfunktion für Personen ohne Rollen für Rolle Mitarbeiter und Kassier der FO ermöglichen #80

Closed
12 tasks done
olibrian opened this issue Nov 18, 2022 · 0 comments · Fixed by hitobito/hitobito#1990

Comments

@olibrian
Copy link
Member

olibrian commented Nov 18, 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.

⚠️ 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
  • Die Ohne-Rollen-Ansicht wird im DeletedPeopleController generiert
  • 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:
    Screenshot 2022-12-16 at 14-38-52
  • Diese Informationen sind mehr oder weniger dieselben wie man auch auf der Ohne-Rollen-Ansicht sehen kann:
    Screenshot 2022-12-16 at 14-39-32 hitobito - Ohne Rollen
  • 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
    • permission(:layer_full).may(:show).deleted_people_in_same_layer
    • permission(:layer_and_below_full).may(:show).deleted_people_in_same_layer_or_below
    • 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 Statement
    permission(: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
@mtnstar 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 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
@TheWalkingLeek TheWalkingLeek self-assigned this Jan 20, 2023
@TheWalkingLeek TheWalkingLeek removed their assignment Jan 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants