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

Elternzugang 1-3: Anmelden an einem Anlass #1967

Closed
39 of 51 tasks
ThomasEllenberger opened this issue Jan 4, 2023 · 1 comment · Fixed by hitobito/hitobito_youth#30 or #2094
Closed
39 of 51 tasks

Elternzugang 1-3: Anmelden an einem Anlass #1967

ThomasEllenberger opened this issue Jan 4, 2023 · 1 comment · Fixed by hitobito/hitobito_youth#30 or #2094

Comments

@ThomasEllenberger
Copy link

ThomasEllenberger commented Jan 4, 2023

Teilissue von #603.

User Story

Wenn ich als Verwalter*in durch einen externen Link, oder in Hitobito auf einen Anlass/Kurs/Lager gelange, will ich dort auswählen können wen ich zu diesem anmelde. Mich, oder einen durch mich verwalteten Account.
Dabei will ich nicht Account wechseln müssen und will ohne auf einen anderen Account wechseln zu müssen auch mehrer Personen nacheinander anmelden können (mehrere Kinder, oder mich und mein Kind).

Anforderungen

Anmeldung an einen Anlass

  • Bei der Anmeldung zu einem Anlass, Kurs oder Lager (Zukünftig nur noch Anlass genannt) kann die Person mit dem Verwalter*innen Account wählen, ob sie sich oder eines der Kinder anmelden möchte.
  • Verwalter*innen-Accounts können die gleichen Anlässe sehen wie ihre Kinder, auch wenn sie sich selber nicht auf diesen Anlass anmelden können.
  • Dabei werden nur diejenigen Personen angezeigt, welche diesen Anlass sehen können (direkt, nicht via ihre Kinder).
  • Falls jemand bereits für diesen Anlass angemeldet ist, wird er*sie ausgegraut und unklickbar gemacht.
  • Pro Teilnehmer*in ist weiterhin eine separate Anmeldung nötig.
  • An folgenden Orten ist dies möglich:
    • Direkt auf dem Anlass
    • Anlass/Kursliste auf Gruppe
    • Anlass-Liste (links im Menu /list_events)

Mockup

image

Tech-Spec

  • Umsetzung im Youth Wagon, aber einige Dinge müssen vermutlich im Core refactored werden, damit sie im Youth Wagon einfacher zu überschreiben sind.
  • Bisher ist die Selbst-Anmeldung nur durch die Sichtbarkeit des Anlasses abgesichert. Also der Button "Anmelden" ist immer sichtbar, sobald ich den Anlass anzeigen kann (und der Anlass gerade Anmeldung unterstützt). Anders gesagt: Es gibt bisher keine Berechtigung, in der ich den Anlass sehen kann aber mich selber nicht anmelden kann. Da mit diesem Feature neu aber die Möglichkeit für Eltern dazukommt, Anlässe anzuzeigen, für die sie sich selber oder einige ihrer Kinder nicht anmelden können, müssen wir das neu zwingend überprüfen. Die Überprüfung könnte ungefähr so funktionieren: Ability.new(child).can? :create, participation und dann in der participation_ability.rb im Core Regeln dafür ergänzen, die die bisherigen Regeln von can? :show, event wiederspiegeln.
  • Für die diversen Anpassungen an den Abilities könnten wir einen Mechanismus brauchen, der nicht nur user berücksichtigt, sondern auch user.manageds. Ich stelle mir etwas im folgenden Stil vor:
    on(Event) do
      for_self_or_manageds do
        permission(:any).may(:show).in_same_layer_or_globally_visible_or_participating
      end
    end
    Bin aber noch nicht sicher, ob das einfach umsetzbar ist, oder ob wir einfacher jeweils alle untenstehenden Abilities von Hand überschreiben.
  • Abgrenzung: Die externe Anmeldung (wenn man noch keinen Account auf hitobito hat) zu Anlässen die das zulassen ist hier ausgeklammert, wird in Elternzugang 2-2: Neuer Verwalter*innen Account erstellen und Kinder zu diesem hinzufügen #1970 angeschaut
  • Abgrenzung: Das direkte Erfassen neuer Kinder während der Anmeldung zu einem Anlass ist hier ausgeklammert, wird in Elternzugang 2-1: Zusätzliche Kinder erfassen zu bestehendem Verwalter*innen Account #1969 angeschaut

ToDo

  • Die Regel permission(:any).may(:create).her_own_if_application_possible muss im Core angepasst werden, damit sie miteinbezieht, ob die betroffene Person den Anlass überhaupt anzeigen darf. Beispiel für Delegation an eine andere Ability. Am besten gleich so implementieren: Ability.new(participation.person).can? :show, event, nicht mit user oder current_person oder so arbeiten, weil es so im Youth Wagon einfacher zu erweitern ist.
  • In event_ability.rb die Bedingungen folgender Abilities so erweitern, dass sie jeweils nicht nur user berücksichtigen, sondern auch user.manageds:
    • permission(:any).may(:show).in_same_layer_or_globally_visible_or_participating
    • Wenn möglich, class_side(:list_available).if_any_role (falls der Elternteil keine Rollen hat aber das Kind schon, soll der Elternteil trotzdem Anlässe auflisten können)
  • In event/participation_ability.rb die Bedingungen folgender Abilities so erweitern, dass die her_own Bedungungen jeweils nicht nur user berücksichtigen, sondern auch user.manageds:
    • permission(:any).may(:show).her_own_or_for_participations_read_events
    • permission(:any).may(:show_details, :print).her_own_or_for_participations_full_events
    • permission(:any).may(:create).her_own_if_application_possible
      • Diese Regel wurde ja im Core oben angepasst. Im Youth Wagon muss geprüft werden, dass einerseits participation.person in [user, *user.manageds] enthalten ist, und andererseits muss weiterhin mit Ability.new(participation.person).can? :show, event geprüft werden, ob das Kind selber den Anlass sehen dürfte
    • permission(:any).may(:destroy).her_own_if_application_cancelable
    • Wenn möglich, general(:create).at_least_one_group_not_deleted (falls der Elternteil keine Rollen hat aber das Kind schon, soll der Elternteil trotzdem Anlässe auflisten können.) Falls das nicht möglich ist, muss möglicherweise dieser general Constraint im Core in alle normalen permission(...).may(:create) eingebaut werden, und dann im Youth Wagon entsprechend für sich selbst und für alle Manageds erlaubt werden
  • In event/application_ability.rb die Bedingungen folgender Abilities so erweitern, dass die her_own Bedungungen jeweils nicht nur user berücksichtigen, sondern auch user.manageds:
    • permission(:any).may(:show_priorities, :show_approval).her_own
  • In event/invitation_ability.rb die Bedingungen folgender Abilities so erweitern, dass die her_own Bedungungen jeweils nicht nur user berücksichtigen, sondern auch user.manageds:
    • permission(:any).may(:decline).own_invitation
  • In event/participation_contact_data_ability.rb die Bedingungen folgender Abilities so erweitern, dass die her_own Bedungungen jeweils nicht nur user berücksichtigen, sondern auch user.manageds:
    • permission(:any).may(:show, :update).her_own
  • Folgende Views und Helpers müssen im Youth Wagon erweitert werden, und dafür möglicherweise im Core refactored, damit sie einfacher im Wagon anzupassen sind.
  • Specs schreiben, mögliche zu testende Workflows siehe nächster Punkt
  • Wenn fertig implementiert, folgende Workflows noch einmal manuell durchtesten (und am liebsten hätten wir für all diese auch automatisierte Tests, aber das ersetzt nicht das finale manuelle durchklicken):
    • Ich habe keine Kinder, und melde mich für einen Anlass meiner Ebene an
    • Ich habe Kinder, und melde mich selber für einen Anlass meiner Ebene an
    • Ich habe Kinder in komplett anderen Gruppen, und melde ein Kind für einen Anlass seiner Ebene an (ich sollte mich selber dort nicht anmelden können)
    • Ich bin für einen Anlass angemeldet, und sehe das auf einem entsprechenden Banner wenn ich den Anlass ansehe.
      • Ich kann mich selber via Button im Banner vom Anlass abmelden
      • Falls Option umgesetzt: Ich kann mich selber via "Abmelden"-Button in den actions_show vom Anlass abmelden
    • Mein Kind ist für einen Anlass angemeldet, und ich sehe das auf einem entsprechenden Banner wenn ich den Anlass ansehe.
      • Ich kann mein Kind via Button im Banner vom Anlass abmelden
      • Falls Option umgesetzt: Ich kann mein Kind via "Abmelden"-Button in den actions_show vom Anlass abmelden
    • Ich bin für einen Anlass eingeladen aber noch nicht angemeldet, und sehe das auf einem entsprechenden Banner wenn ich den Anlass ansehe
      • Auf dem Einladungs-Banner von mir selber kann ich den Button bedienen, um mich selber anzumelden
    • Mein Kind ist für einen Anlass eingeladen aber noch nicht angemeldet, und ein anderes Kind (oder ich selber) ist bereits angemeldet. Das sehe ich auf den entsprechenden Bannern wenn ich den Anlass ansehe
      • Auf dem Einladungs-Banner meines Kindes kann ich den Button bedienen, um mein Kind anzumelden
    • In einem Anlass meiner Ebene kann ich niemanden anmelden, wenn die Anmeldung auf dem Anlass deaktiviert ist
    • Einen Anlass der Gruppe meiner Kinder kann ich anzeigen, aber ich kann niemanden anmelden, wenn die Anmeldung auf dem Anlass deaktiviert ist
    • Ich kann meine eigene Teilnahme am Anlass bearbeiten (z.B. Event Questions beantworten, Bemerkungsfeld ausfüllen)
    • Ich kann die Teilnahme meiner Kinder bearbeiten (z.B. Event Questions beantworten, Bemerkungsfeld ausfüllen)
    • (Testen mit PBS Wagon) Wenn ich mein Kind für einen Kurs anmelde (unabhängig dem Feld "Priorisierung" auf dem Event), ist die Anmeldung nicht automatisch zugeteilt, sondern landet in der rechten Spalte auf dem "Anmeldungen" Tab
    • (Testen mit PBS Wagon) Wenn ich mich selber für einen Kurs anmelde (unabhängig dem Feld "Priorisierung" auf dem Event), ist die Anmeldung nicht automatisch zugeteilt, sondern landet in der rechten Spalte auf dem "Anmeldungen" Tab
    • (Testen mit non-PBS Wagon) Wenn ich mein Kind für einen Kurs anmelde (auf dem Priorization aktiviert ist), ist die Anmeldung nicht automatisch zugeteilt, sondern landet in der rechten Spalte auf dem "Anmeldungen" Tab
    • (Testen mit non-PBS Wagon) Wenn ich mich selber für einen Kurs anmelde (auf dem Priorization aktiviert ist), ist die Anmeldung nicht automatisch zugeteilt, sondern landet in der rechten Spalte auf dem "Anmeldungen" Tab
  • Kunde wegen Übersetzungen informieren
@ThomasEllenberger ThomasEllenberger changed the title Elternzugang 1-3: Kind anmelden an einem Anlass Elternzugang 1-3: Anmelden an einem Anlass Jan 4, 2023
@ThomasEllenberger ThomasEllenberger added this to the HIT-ELT-DEV milestone Jan 5, 2023
@carlobeltrame carlobeltrame removed their assignment Mar 20, 2023
@TheWalkingLeek TheWalkingLeek removed their assignment Apr 6, 2023
@carlobeltrame carlobeltrame self-assigned this Apr 13, 2023
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
This allows us to easily define abilities which parents can inherit from
their children. I.e. if the child is allowed to do it, the parent is
also allowed to do it.

Refs hitobito/hitobito#1967
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
This allows us to easily define abilities which parents can inherit from
their children. I.e. if the child is allowed to do it, the parent is
also allowed to do it.

Refs hitobito/hitobito#1967
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
This allows us to easily define abilities which parents can inherit from
their children. I.e. if the child is allowed to do it, the parent is
also allowed to do it.

Refs hitobito/hitobito#1967
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
…ageds

Most of the changes here can use the new for_self_or_manageds mechanism.
But when a condition combines her_own_or_something_else, then we must
manually add the manager option, to make sure that the manager only
inherits the her_own part, not the something_else part.

Refs hitobito/hitobito#1967
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue Apr 14, 2023
…ageds

Most of the changes here can use the new for_self_or_manageds mechanism.
But when a condition combines her_own_or_something_else, then we must
manually add the manager option, to make sure that the manager only
inherits the her_own part, not the something_else part.

Refs hitobito/hitobito#1967
@TheWalkingLeek TheWalkingLeek linked a pull request Apr 28, 2023 that will close this issue
@TheWalkingLeek TheWalkingLeek removed their assignment Apr 28, 2023
@mtnstar mtnstar self-assigned this May 3, 2023
@carlobeltrame carlobeltrame reopened this May 12, 2023
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue May 12, 2023
This allows us to easily define abilities which parents can inherit from
their children. I.e. if the child is allowed to do it, the parent is
also allowed to do it.

Refs hitobito/hitobito#1967
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue May 12, 2023
carlobeltrame added a commit to hitobito/hitobito_youth that referenced this issue May 12, 2023
…ageds

Most of the changes here can use the new for_self_or_manageds mechanism.
But when a condition combines her_own_or_something_else, then we must
manually add the manager option, to make sure that the manager only
inherits the her_own part, not the something_else part.

Refs hitobito/hitobito#1967
@carlobeltrame
Copy link
Member

Noch offen: Manuelles Durchtesten aller obiger Use Cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment