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: SAC Eintritt Wizard für bestehende user #859

Open
5 of 6 tasks
daniel-illi opened this issue Aug 20, 2024 · 3 comments · May be fixed by #1065 or hitobito/hitobito#2899
Open
5 of 6 tasks

PEOPLE: SAC Eintritt Wizard für bestehende user #859

daniel-illi opened this issue Aug 20, 2024 · 3 comments · May be fixed by #1065 or hitobito/hitobito#2899

Comments

@daniel-illi
Copy link
Contributor

daniel-illi commented Aug 20, 2024

Der Wizard für den SAC Eintritt soll angepasst werden, dass er auch von eingeloggten usern verwendet werden kann.

Wenn ein eingeloggter user den Wizard verwendet, dann fehlt der Schritt "Haupt-E-Mail" und Schritt 1 ist direkt "Personendaten", die Felder sind vorausgefüllt mit den Werten des eingeloggten users.
Wenn der User die Felder editiert, sollen nach Abschluss des Wizards die Werte auf den bestehenden User persistiert werden.

Ansonsten soll sich der Wizard identisch verhalten wie bisher.

Tech-Spec

  • im Core:
    Plumbing anpassen, damit wir in den wizard steps Zugriff auf die current_ability resp. den eingeloggten user haben:
    • Groups::SelfRegistrationController#wizard anpassen: wizard initialisieren mit current_ability Argument
    • Wizards::Base#current_user public machen
    • Auf Wizards::Step: delegate :current_user, to: :wizard
  • im SAC wagon:
    • SacCas::Groups::SelfRegistrationController
      • #redirect_to_memberships_tab implementieren:
        Wenn eine eingeloggte Person, welche bereits eine SAC Mitgliedschaft hat, die self registration benutzt, dann soll sie auf das Register “Mitgliedschaften / Verlauf” ihres Personenprofils weitergeleitet werden und eine Meldung soll im Flash angezeigt werden:

        “Du besitzt bereits eine SAC-Mitgliedschaft. Wenn du diese anpassen möchtest, kontaktiere bitte die SAC Geschäftsstelle.“

        redirect_to history_group_person_path(group_id: current_user.primary_group_id, id: current_user.id)
      • #create anpassen:
        • redirect_to_login aufrufen, falls eine person vorhanden ist und der user KEINE eingeloggte Person ist.
        • redirect_to_memberships_tab aufrufen, falls der current_user bereits eine Mitgliedschaft/Neuanmeldung hat
        def create
          return redirect_to_login if person && !signed_in?
          return redirect_to_memberships_tab if member_or_applied?
        
          super
        end
        
        # ev. direkt in People::SacMembership implementieren
        def member_or_applied?
          current_user.sac_membership.stammsektion_role || 
            current_user.sac_membership.neuanmeldung_stammsektion_role
        end
      • #redirect_to_group_if_necessary von super überschreiben ohne die signed_in? condition.
        Es soll immer self_registration verwendet werden auch für eingeloggte user statt der self_inscription:
        def redirect_to_group_if_necessary
          redirect_to group_path(group) unless group.self_registration_active?
        end
      • #redirect_to_login anpassen:
        group_self_registration_path statt group_self_inscription_path damit devise nach dem Login wieder auf die self registration umleitet
    • Wizards::Signup::SektionWizard:
      • #build_person:
        Wenn wizard von eingeloggter Person verwendet wird, den current_user zurückgeben und diesem die Attribute assignen:
        def build_person
          return current_user.tap { _1.assign_attributes(person_attributes) } if current_user.persisted?
        
          super
        end
      • #email implementieren statt dem delegate :email:
        Wenn wizard von eingeloggter Person verwendet wird, deren email zurückgeben, ansonsten den Wert vom main_email_field step.
        • current_user kann auch ein NICHT eingeloggter user sein, dann ist email=nil
        • step(:main_email_field) ist nil falls current_user nicht eingeloggt ist
        def email = current_user&.email || step(:main_email_field)&.email
        
      • #step_after anpassen:
        Wenn der Wizard von einer eingeloggen Person verwendet wird, dann gibt es keinen email step und es soll direkt das Personendaten Form angezeigt werden:
        • eingeloggte Person: current_user.persisted?
        • wenn der user eine eingeloggte Person ist, dann Wizards::Steps::Signup::Sektion::PersonFields zurückgeben.
      • #operations anpassen: für "main person" current_user statt person_attrs übergeben falls eingeloggter user
    • Wizards::Signup::SektionOperation: anpassen, damit anstatt der person_attrs eine Person Instanz übergeben werden kann

ToDo

  • Core Anpassungen
  • SacCas::Groups::SelfRegistrationController anpassen
  • Wizards::Signup::SektionWizard anpassen
  • Wizards::Signup::SektionOperation anpassen
  • Specs schreiben
  • Mit angemessener Rolle "durchklicken"
@daniel-illi daniel-illi self-assigned this Aug 20, 2024
@daniel-illi daniel-illi removed their assignment Sep 20, 2024
@Largo Largo self-assigned this Sep 30, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Sep 30, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Oct 1, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Oct 1, 2024
@Largo Largo linked a pull request Oct 4, 2024 that will close this issue
@Largo Largo linked a pull request Oct 4, 2024 that will close this issue
Largo added a commit to hitobito/hitobito that referenced this issue Oct 4, 2024
@Largo
Copy link
Contributor

Largo commented Oct 5, 2024

@daniel-illi #operations anpassen: für "main person" current_user statt person_attrs übergeben falls eingeloggter user:
Warum nur fuer sac family main person? Das klappt nicht? 🤔

Largo added a commit that referenced this issue Oct 5, 2024
WIP

WIP

WIP

fix endless loop

WIP
Largo added a commit to hitobito/hitobito that referenced this issue Oct 6, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Oct 9, 2024
@daniel-illi
Copy link
Contributor Author

daniel-illi commented Oct 10, 2024

@daniel-illi #operations anpassen: für "main person" current_user statt person_attrs übergeben falls eingeloggter user: Warum nur fuer sac family main person? Das klappt nicht? 🤔

@Largo sorry für meine späte Antwort. Das war so gemeint:

  • die alte Implementation der SektionOperation kriegt person_attrs als Argument und erstellt anhand von diesen eine Person. Die angepasste Implementation akzeptiert auch eine Person Instanz und aktualisiert diese statt eine neue zu erstellen.
  • der SektionWizard übergibt der ersten SektionOperation falls der user eingeloggt ist die entsprechende Person Instanz

Wie ich sehe hast du die Operation so angepasst, dass sie immer eine Person Instanz erhält und instanzierst die Person bereits im Wizard. Das passt natürlich auch 👍
Da fehlt nur noch, dass der current_user nur für die erste Person verwendet werden soll und die potentiellen weiteren Personen immer anhand der attrs instanziert werden müssen.

Largo added a commit that referenced this issue Oct 10, 2024
WIP

WIP

WIP

fix endless loop

WIP
Largo added a commit to hitobito/hitobito that referenced this issue Oct 11, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Oct 11, 2024
Largo added a commit that referenced this issue Oct 13, 2024
WIP

WIP

WIP

fix endless loop

WIP
Largo added a commit to hitobito/hitobito that referenced this issue Oct 13, 2024
Largo added a commit that referenced this issue Oct 13, 2024
Largo added a commit to hitobito/hitobito that referenced this issue Oct 14, 2024
@Largo
Copy link
Contributor

Largo commented Oct 14, 2024

Hier fehlt im Moment nur noch das die Personendaten nicht eingefüllt werden, wenn der Personen Felder Schritt angezeigt wird. Man müsste dies vermutlich im Step anpassen.

Largo added a commit to hitobito/hitobito that referenced this issue Oct 14, 2024
Largo added a commit that referenced this issue Oct 14, 2024
WIP

WIP

WIP

fix endless loop

WIP
Largo added a commit that referenced this issue Oct 14, 2024
Largo added a commit that referenced this issue Oct 14, 2024
WIP

WIP

WIP

fix endless loop

WIP

fix redirect to membership tab (#859)

fix specs

fix specs
@Largo Largo removed their assignment Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants