Skip to content

Create sign-up flow for PendulumPay web app #2

@prayagd

Description

@prayagd

As a user, i should be able to sign-up the web app

Acceptance criteria

  • on visiting the PendulumPay web app
  • Now clicking "Sign-up" button on the top right corner of the screen
  • on /signup show two fields
    • "Email" - only emails should be accepted here and no other text
    • "Create Password" - only passwords should be accepted in this field
    • Show a "Sign-up" button below these two fields, the button should be enabled only after the two fields are filled
    • on clicking the "Signup" button
      • if the email already exists in our system, then send an email to the user clarifying that the user account already exists and that they should log in instead
    • if the email does not exist, clicking the "Signup" button
    • Next show on /confirm with text "Email sent to xxx@xx.com (provided email address), please verify your email address"
    • Send an email to the provided email for confirmation. The email should contain a unique link that, when clicked, verifies the email and activates the account.
    • the user is not yet logged in after signing up
    • email validation
      • the user SQL table has a boolean field emailValidated (or better: a timestamp field emailValidatedAt)
      • contains a link with a unique id (as a query parameter)
      • the link goes to a GET endpoint that returns a 303 to the login page
        • the GET endpoint sets the emailValidated (or emailValidatedAt) field in the user table
      • the user will not be logged in yet at that point
    • If email verification done from email, redirect to login page

Note

  • Email text
Subject: Activate Your PendulumPay Account
Click the link to verify your PendulumPay registration. If not initiated by you, ignore this message.

Standard secure Login/Signup flow

Due to GDPR we need to use secure practices that do not expose whether an email address is in our system.

General principles

  • all passwords are allowed, only requirement is minimum length, e.g., 8 or 10
    • no other requirements (particularly no password rules like uppercase, lowercase, etc)
    • (for a low priority feature we will implement later, we will check in the backend whether the password is common or has been pwned)
  • passwords and emails are always normalized in backend (both for login and signup)
    • password: trim whitespace at beginning and end
    • email: trim whitespace at beginning and end, make everything lowercase
  • passwords use a password hashing algorithm, the hashed passwords is a field of the user table in the database
    • e.g., bcrypt

Lo-fi wireframes

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions