affinityworks/main

2-step email signup path [3]

Closed this issue · 4 comments

resolved by #634


Acceptance Criteria

GIVEN I am a non-logged-in user on a group's signup page (groups/1/join):

  • THEN i should see a "join with email" button
  • WHEN i click the button, I should go to a signup information gathering page (groups/1/members/new?mode=email)

GIVEN I am on the signup information gathering page (groups/1/members/new?mode=email):

  • THEN I should see a form with all forms currently specified in SignupForm.for PLUS a password field
  • IF I enter all required fields without error, i am logged in and redirected to my home page
  • IF I make submission errors, I am prompted to correct them

fleshing this out a little bit from our call:

  • new person who has never signed up sees the "new member signup form" for a group
  • they see a button that says "join with email", and they click the button
  • they now see a second page (nice if it's designed like a modal, or a page with no chrome on it at least), which asks them for their email address, PASSWORD, and any other fields which the existing subgroup member signup form requries
  • upon finishing the second page, they are added to the group as normal

this is a dependency for ticket #614 "automatic login to subgroup", since once this ticket is complete, THEN we will automatically log the person in to their newly joined group.

hmm... @Matt-Holland , on our call the dependency went the other way.

as discussed yesterday the idea was:

  • we keep the signup form as is, and log in the user immediately after they click submit (because it doesn't take much work).
  • then once that's complete, we move on to this work, and when the user clicks "submit" on the login page, they will automatically be logged in (because we already built that functionality)

added note: this card will be complex because we will have to refactor SignupForm to allow for mutliple kinds of fields (not just text fields), which means we will have to run a migration to store inputs as an array of hashes instead of an array of strings. (eg: inputs: [{ field: 'phone', type: 'text'}, {field: 'password', type: 'password'}, {field: 'email', type: 'text'}] instead of just inputs: [:phone, :email]

works as designed. deploying.